メディア処理演習 画像メディア処理imread(‘lena.bmp’) %lena.bmp...
TRANSCRIPT
講義内容
• 課題1:デシタル画像の性質,画像処理の概要
• 課題2:MA TLAB の操作と画像の濃淡変化
• 課題3:画像のヒストクラムと 2 値化処理
• 課題4:空間フィルタとエッシ情報抽出
課題1:デシタル画像の性質,画像処理の概要
• デシタル画像とは
• 画像の構成
• 画像の種類
• 画像の表現
• ソフトウェアによる様々な画像処理
• 画像の擬似コード
画像の種類
種類 形式 備考
二値化画像
文字,線画, 指紋等
濃淡画像
(GrayScale) 通常の写真
n = 6~8が標準
カラー画像 カラー3原色(R, G, B)
マルチスペクトル画像 リモートセンシンク用
m=4~8が多い
ステレオ画像 左右視点からの対画像
立体視用
動画像 動態解析,アニメーション
0
1),( jif
12),(0 njif
BGRkjifk ,,)},,({
mkjifk ,,1)},,({
},{ RL ff
nt tttjif ,,)},,({ 1
画像処理とは
• コンピュータなどの計算機に画像を入力(デシタル化)し,
入力された画像に対して処理を行うこと
• 処理した出力結果の形態
– 入力情報に対し,処理結果を画像で出力
–コントラスト調整,エッシ抽出,ノイズ除去
–コンピュータビション など
– 入力画像に対し,処理結果を記述情報によって出力
–画像解析
–画像認識
–画像計測 など
画像処理とは(その1)
• 画質の改善
入力された画像を見えやすくする
– 入力:画像
– 出力:画像
– 処理内容
• ノイズ除去,画像強調,画像復元等
画像処理とは(その2)
入力画像に対し,処理結果を記述情報による出力
入力画像に対しその情報を抽出,認識を行う 入力:画像
出力:必要な情報,パターン等の記述情報
処理内容:画像解析,画像認識,画像計測 など
画像処理とは(その3)
• コンピュータビション,コンピュータクラフィックス
– 画像の人的作成
• 入力:関数や点群
• 出力:画像や図形
画像処理は特に1と2の処理を示す
画像処理の流れ
計算機へ 画像入力
計算機上での 画像処理,解析など
画像出力
情報記述
画像処理で何ができるのか
画質の改善,画像計測,認識などを幅広く行える
– 人物の認識
顔や指紋などの自動認識によるセキュリティ対策
– ロボティックス
機械の知能化,外界情報を如何に効率よく取り入れるか
– 医用画像処理
医用画像デシタル化に伴い,効率的な病変部位の特定、術前および治療計画等
– 工業系における検査支援
検査パターンを取り込むことで,検査精度の高精度化
画像処理技術は各種産業,医療,航空宇宙,工業分野等, 多岐の分野に渡って多く利用されている
など
デシタル画像とは
• 画像情報をコンピュータなどで取り扱えるよう数値化した画像
– 画素(ピクセル):画像の中の「小さな正方形領域」
– 画素毎に色や明るさ等の数値情報により画像を構成
アナロク:連続的な波形を持つ
デシタル:離散的な数値情報
画素
デシタル画像
画像の構成(数式化)
• デシタル画像:
– 画像情報をコンピュータなどで取り扱えるよう数値化した画像
– 画素を単位として,画素の数値で色や明るさを表現する
画像の数式化
valuejif ),(
m×nの画像
デシタル画像の種類
種類 形式 備考
二値化画像
文字,線画, 指紋等
濃淡画像
(GrayScale) 通常の写真
n = 6~8が標準
カラー画像 カラー3原色(R, G, B)
マルチスペクトル画像 リモートセンシンク用
m=4~8が多い
ステレオ画像 左右視点からの対画像
立体視用
動画像 動態解析,アニメーション
0
1),( jif
12),(0 njif
BGRkjifk ,,)},,({
mkjifk ,,1)},,({
},{ RL ff
nt tttjif ,,)},,({ 1
画像の種類
• 2値画像 (binary image)
(各ピクセルに0か1をもつ)
• 濃淡画像(grayscale image)
(各ピクセルに0から255の間の整数をもつ)
• カラー画像(color image)
(各ピクセルに三つの整数データをもつ)
画像はピクセル(画素)の集合
各ピクセルは輝度と色などの情報をもつ
二値画像と濃淡画像
• 二値画像 – 完全な白色と完全な黒色の2色のみで表現された画像
– 間の中間色(クレー色)を混ぜず,黒(1)と白(0)の数値で画像表現
• 濃淡画像(クレイスケール) – ある範囲内の数値のみで表現された画像
– おもに,0~255の範囲内で表現する
二値画像 クレイスケール画像
カラー画像
• 画像を光の3原色(R, G, B)を合成して表現した画像 – カラー画像の式
BGRkjifk ,,)},,({
R成分画像 G成分画像 B成分画像
画像処理の擬似コード
for i=1:N,
for j=1:M
Output[i][j] の処理
end
end
画像処理は基本,ピクセル(画素)単位で処理を行う
画像サイズを N*M(N行M列)とすると,以下が成り立つ
課題1:ソフトウェアを用いた画像処理
1. GIMPを用いて,画像を読み込む
2. GIMPに用意されている画像処理機能を使って 画像の性質に慣れる
3. 課題について,テキストに記述してます
GIMPとは
• 画像編集用のフリーソフト
• Photoshopと同様にさまざまな画像処理を行うことが可能
講義ではGIMPを利用して画像処理を体験する
課題2:MA TLAB の操作と画像の濃淡変化
• MATLABに慣れよう
• 画像処理の擬似コード
• MATLABによる濃淡変化
コマンドウィンド
ワークスペース
コマンドヒストリ
MATLABの起動画面
画像処理の擬似コード
for i=1:N,
for j=1:M
Output[i][j] の処理
end
end
画像処理は基本,ピクセル(画素)単位で処理を行う
画像サイズを N*M(N行M列)とすると,以下が成り立つ
行列やベクトルの計算も簡単にできる
• 例:以下の行列AとBとの積を求める
• 実行方法
>> A=[1 2; 3 4] %行列Aの入力
>> B=[5 6; 7 8] %行列Bの入力
>> C=A*B %行列C=A*Bの計算
87
65,
43
21BA
C =
19 22
43 50
のような結果が表示される.
様々な行列計算
• 行列の転置 x’
• 逆行列 inv(x)
• 行列式 det(x)
• 行列の要素 x(2,1) %2行1列の要素
クラフィックス表示
t=0:pi/100:2*pi; % 0~2πまでの時刻の範囲,刻みπ/100
x=sin(t); % 横軸の計算
y1=sin(t+0.25); % 出力1の計算
y2=sin(t+0.5); % 出力2の計算
plot(x,y1,'r-',x,y2,'g--'); % 出力の表示 y1は赤の実線;y2はクリーンの波線
title=('Phase Shift'); % タイトルの指定
xlabel('x=sin(t)'); ylabel('y=sin(t+)'); % 座標軸名の設定
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x=sin(t)
y=sin(t+)
MATLAB練習問題
• Matlabを使って、以下の連立方程式を解きなさい
23
642
yx
yx
画像関係
• 画像の読み込み imread
• 画像の書き込み imwrite
• 画像の表示 imagesc
例 a=imread(‘lena.bmp’) %lena.bmpという画像ファイルをaという
2次元配列に読み込み
a=double(a); % 2次元配列aを倍精度の実数に変換する
[m, n]=size(a); %2次元配列(画像)のサイズ
処理
a=uint8(a); %倍精度を8ビットの整数に変換する
imagesc(a); %結果の画像を表示
colormap(gray);
imwrite(a, ‘image.pgm’) %結果の画像をimage.pgmというファイルに出力
MATLABによる画像処理プロクラミンク例
この部分を変更する
画像の濃淡変化
• 入力画像と出力画像の関係のクラフは基本的に線形
0
50
100
150
200
250
300
0 50 100 150 200 250
入力画像
出力画像
Input O
utp
ut
この入出力を変化させる
濃淡の反転(ネガ・ポシ反転)
トーンカーブ
• 画像の濃淡を変化させるために、入力画像のそれぞれの画素値が出力画像の画素値との対応関係を諧調変換関数(gray-level transform function)という。
• それをクラフで表したものをトーンカーブ(tone-curve)という。
1.直線より上に出ている部分(図のA)では、入力より出力のほうが明るい
2.直線より下に出ている部分(図のB)では、入力より出力のほうが暗い
3.傾きが1より大きな部分(図のC)では、出力における濃淡の範囲が広げられ、
コントラストがあげられる
折れ線型トーンカーブによる変換(1)
• 画像全体が明るくなり、コントラストを上げる例(傾きが1より大きい)
Output(i, j) =a* Input(i, j) Input(i, j) <Th
255 Input(i, j) ³Th
ì
íï
îï
折れ線型トーンカーブによる変換(2)
• 明るさを抑え、コントラストを上げる例(傾きが1より大きい)
Output(i, j) =0 Input(i, j) <Th
a* Input(i, j) Input(i, j) ³Th
ì
íï
îï
折れ線型トーンカーブによる変換(3)
• コントラストを下げる例(傾きが1より小さい)
Output(i, j) = a* Input(i, j)+Th a <1
Output(i, j) =Th1 Output(i, j) <Th1
Output(i, j) = a* Input(i, j)+Th1 Th1£Output(i, j) <Th2
Output(i, j) =Th2 Output(i, j) ³Th2
ì
íï
îïï
ソラリゼーション(solarization)
ネガ画像とポシ画像が混じりあったような効果
Output(i, j) = a1 * Input(i, j) a1 = 255 /Th1
Output(i, j) = a2 * Input(i, j) a2 = -255 / (Th2 -Th1)
Output(i, j) = a3 * Input(i, j) a2 = 255 / (Th3-Th2)
ì
íï
îïï
複数画像によるブレンディンク
• 2枚の画像を重ねあわせてみる
Output(i, j) = a* Input1(i, j)+ (1-a)* Input1(i, j)0 £ a £1
Input1 Input2
複数画像によるブレンディンク
a = 0.1 a = 0.3 a = 0.5
a = 0.7 a = 0.9
カラー画像の画像処理コード
この部分を変更する
ポスタリゼーションと2値化
ポスタリゼーションと2値化
Output(i, j) = 0 0 < Input(i, j) <Th1
Output(i, j) =Th1 Th1£ Input(i, j) <Th2
Output(i, j) =Th2 Th2 £ Input(i, j) <Th3
Output(i, j) =Thn-1 Thn-1£ Input(i, j) < Thn
ì
í
ïïï
î
ïïï
ポスタリゼーション
二値画像
Output(i, j) = 0 Input(i, j) <Th
Output(i, j) = 255 Input(i, j) ³Th
ì
íï
îï解析的に閾値を求める
課題3:画像のヒストクラムと 2 値化処理
• デシタル画像とは
• 画像の構成
• 画像の種類
• 画像の表現
• ソフトウェアによる様々な画像処理
画像ヒストクラム
• 各濃度値に対して、画像中におけるその濃度値をもった画素数をもとめたもの
• 横軸を濃度値、縦軸を画素数
原画像
ヒストクラム
ヒストクラムのプロクラム例
ヒストクラムの性質
• 空間情報がないため、異なる画像が同一ヒストクラムをもつことがある。
• 画像をいくつかの領域に分割し、それぞれの領域のヒストクラムの和は画像全体のヒストクラムの和と同じである。
ヒストクラムは適切にスケールされることが重要
コントラストが最もよい コントラストが低い 一部分の濃淡変化が失われる
ヒストクラムの平滑化
画像
ヒストクラム
Original 平滑化後
ヒストクラムを利用した2値化
2値化
• 任意の値(閾値)を境に画素値を1(白),0(黒)で表現する
• 2値化は画像処理における基本かつ重要な処理 – 対象領域を白,その他を黒で分ける
– パターン認識等でも重要な役割を担っている
– 閾値の決定法はさまざまな手法が提案されており,問題によってその手法が変わる
二値画像(t = 150) クレイスケール画像
tjif
tjifjif
),(0
),(1),(
2値化処理
• 処理方法 – 閾値指定法
ある閾値を指定し,その閾値より大きい値と小さい値で2値化を行う処理
– 大津の判別法 背景と対象に対して分離度がもっとも大きくなるような閾値を決定し,
自動的に二値化を行う処理
• 応用例 – 製品欠陥検査,検出
– ラベリンク処理
– 領域分割, 抽出
大津の2値化処理例
• 背景と人物の分離が最もよく行えるように,それぞれの分散が最大になるよう閾値を決定する
元の画像 大津の2値化による2値化処理
レポート課題3
• ヒストクラムを求めるプロクラムをMATLABで作成せよ
• Imageフォルダ内のカラー画像を選択し,濃淡画像に変換せよ
• 画像のヒストクラムを求めよ
• 適当なしきい値により,2値画像を提示せよ
(内容はテキストに書いてます)
課題4:空間フィルタとエッシ情報抽出
• デシタル画像とは
• 画像の構成
• 画像の種類
• 画像の表現
• ソフトウェアによる様々な画像処理
空間フィルタリンク(filtering)
• 入力画像の対応する画素値だけではなく、その周囲の画素も含めた領域内の画素値を用いた計算を領域に基づく濃度変換まはた空間フィルタリンクという。
(トーンカープ)
諧調変換関数:][
)],([),(
T
jifTjig
g(i,j) f(i,j) f(i,
j)
g(i,j)
)12)(12(:
:),(
),(),(*),(
ww
kenelnmh
nmhnjmifhfjigw
wn
w
wm
幅)フィルタのサイズ(窓
ともいう)フィルタ関数(
(領域に基づく濃度変換)
空間フィルタ
• 画像にノイズを加えたり,画素の近傍の画素に重みをかけて 足し合わせた画像を作ること
– 近傍処理とも呼ばれる
• 出力画像は原画像と空間フィルタとの演算により与えられる
• 処理の種類
– ノイズ除去
– エッシ抽出
1
1
1
1
),()2/,2/(),(m
p
n
q
qpwnqjmpifjif
具体的な計算(フィルタ関数:3x3)
h(-1,-1) h(-1,0) h(-1,1)
h(0,-1) h(0,0) h(0,1)
h(1,-1) h(1,0) h(1,1)
f(i-1,j-1) f(i-1,j) f(i-1,j+1)
f(i,j-1) f(i,j) f(i,j+1)
f(i+1,j+1) f(i+1,j) f(i+1,j+1)
例えば:フィルタ関数が3x3の場合、w=1 (-w~w)
*
)1,1()1,1(),1()0,1()1,1()1,1(
)1,()1,0(),()0,0()1,()1,0(
)1,1()1,1(),1()0,1()1,1()1,1(
),(),(*),(
jifhjifhjifh
jifhjifhjifh
jifhjifhjifh
nmhnjmifhfjigw
wn
w
wm
空間フィルタ(イメーシ)
周辺画素を含めた領域内の画素値を使って、畳み込み演算することで濃淡変換して出力画像を得る
畳み込みによるfilteringのアルゴリズム
Input f(i,j) (i,j=0,N-1) and h(m,n) (m,n=-w, w) For i=m, N-1-m; For j=m, N-1-m; g(i,j)=0: For n=-w, w; For m=-w,w; g(i,j) += h(m,n) x f(i+m,j+n); next m, n; next i,j;
画像f:NxN; フィルタ関数h:(2w+1)x(2w+1)
ノイズ除去
• 画像にはカメラの撮影素子や様々な要因で起因するノイズが含まれる場合がある
• ノイズは細かい変動成分のため,画像処理で妨げになる
• 処理の種類 – 処理方法は問題によって異なる
– 移動平均フィルタ,メディアンフィルタなど
目的の情報を効率的に行う前処理として重要
原画像 ノイズ付加画像
ノイズ除去
原画像
ノイズ付加画像 ノイズ除去画像
空間フィルタ(代表例)
• 平均化フィルタ – 注目画素の値をフィルタ領域内の画素値の平均にして画像全体を平滑化するフィルタ
• 微分フィルタ – 濃度値の変化量を求めて、明るさが変化する「輪郭」となる部分を抽出するフィルタ
– X方向の微分とY方向の微分を使って、エッシを抽出する。
• Prewitt フィルタ
– 微分方向と直交する方向に平滑化することで、エッシを残しつつノイズを低減させるフィルタ
• Sobel フィルタ
– 中央に重みを付けて平滑化したものと組み合わせたフィルタ
平均化フィルタ
平均値フィルタ例
平均値フィルタ(mean filter)
0 1 0
1 1 1
0 1 0 5
1
5
),1()1,(),()1,(),1(),(
ijfijfjifijfijfijg
f(j-1,i-1) f(j-1,i) f(j-1,i+1)
f(j,i-1) f(j,i) f(j,i+1)
f(j+1,i+1) f(j+1,i) f(j+1,i+1)
*
平均値フィルタ出力例
重み付き平均値フィルタ
0 1 0
1 2 1
0 1 0 6
1
6
),1()1,(),(2)1,(),1(),(
ijfijfjifijfijfijg
f(j-1,i-1) f(j-1,i) f(j-1,i+1)
f(j,i-1) f(j,i) f(j,i+1)
f(j+1,i+1) f(j+1,i) f(j+1,i+1)
*
重み付き平均値フィルターの例(Kernel:3x3)
0 1 0
1 2 1
0 1 0
6
),1()1,(),(2)1,(),1(
6/)]1,1(0),1(1)1,1(0
)1,(1),(2)1,(1
)1,1(0),1(1)1,1(0[
)1,1()1,1(),1()0,1()1,1()1,1(
)1,()1,0(),()0,0()1,()1,0(
)1,1()1,1(),1()0,1()1,1()1,1(
),(),(*),(
jifjifjifjifjif
jifjifjif
jifjifjif
jifjifjif
jifhjifhjifh
jifhjifhjifh
jifhjifhjifh
vjuifvuhhfjigm
mu
m
mv
6
1
Gaussianフィルタ(重み付き平均)
)2
exp(2
1),(
)2
exp(2
1)(
2
22
2
2
2
yxyxh
xxh
g
g
1次元
2次元
中間値フィルタ
20
3.
(1)
3x3
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
(2)
.
4 5
4.
(1)
目画素とその近傍(窓の範囲内)の濃度 値全体をソートし,
その中間に位置する濃度値を注目画素に埋め込む
ノイズ除去(メディアンフィルタ)
• n×nの局所領域における濃度値を小さい順に並べ、 真ん中にくる濃度値を領域中央の画素の出力濃度とする処理
• 平滑化ではエッシのボケが生じるが, メディアンフィルタの場合、エッシはそのまま残る.
ノイズ画像 メディアンフィルタ画像
エッシ抽出(high-pass filter)
• 画像の中に急激に変化する部分(高周波成分)をエッシと呼ぶ
• エッシは視覚的に境界線として認識される
• エッシの検出には、勾配( 1次微分)やラプラシアン( 2次微分)などの微分operatorを用いる。
エッシ信号
勾配:最大値
ラプラシアン:零交点
中心差分による偏微分
0 0 0
-1 0 1
0 0 0
2
)1,()1,(
2
,,),(
2
),1(),1(
2
,,),(
yxfyxf
y
yyxfyyxfyxf
yxfyxf
x
yxxfyxxfyxf
y
x
x
y
0 -1 0
0 0 0
0 1 0
/2 /2
fx fy
勾配
fの勾配:偏微分fxとfyを成分とするベクトル
fの最も急速に変化する方向
),( yx fff
22
yx fff
エッシ検出:
otherwise
fyxedge
,0
,255),(
2値エッシ画像
ノイズを含む画像を微分すると、ノイズを増幅してしまう
ノイズの影響を抑えるために、偏微分の差分計算に、画素値
ではなく、その画素を中心とする周辺の平均値を用いる
2
)1()1(),(
2
)1(1),(
xx
y
yy
x
yfyfyxf
xfxfyxf
ノイズの影響を抑えるためのエッシ抽出フィルタ
Sobelフィルタ、Prewittフィルタ
ノイズを抑えたエッシ抽出(Sobel Filter)
• 中央に重みを付けて平滑化したものと組み合わせたフィルタ
元の画像 Sobelフィルタ処理した画像
ノイズを抑えたエッシ抽出
• ラプラシアンフィルタ
– 1次微分はX方向とY方向の1次元データをそれぞれ扱うが,2次微分は1度に2方向のデータを扱う
– そのため、方向性に取られにくいエッシを抽出ができる
– このようなフィルタのことをラプラシアンフィルタという
元の画像 ラプラシアンフィルタ処理した画像
空間フィルタ(代表例)
• ラプラシアンフィルタ
– 1次微分はX方向とY方向の1次元データをそれぞれ扱うが,2次微分は1度に2方向のデータを扱う
– そのため、方向性に取られにくいエッシを抽出ができる
– このようなフィルタのことをラプラシアンフィルタという
0 +1 0
+1 -4 +1
0 +1 0
+1 +1 +1
+1 -8 +1
+1 +1 +1
4方向ラプラシアン 8方向ラプラシアン
Laplacian filters(エッシ検出)
0 -1 0
-1 4 -1
0 -1 0
1
),1()1,(),(4)1,(),1(),('
ijfijfjifijfijfijf