SimpleBmpViewer - 画像処理詳細
ページ内リンク
グレースケール化
二値化
3x3フィルタ
変形
色
ノイズ付加
補正
ヒストグラム
グレースケール化
- 単純平均
画素のR,G,Bの値を単純に平均した値を輝度とします。
輝度yは以下の計算式で求めます。
y = ( R + G + B ) / 3
- 中間値
画素のR,G,Bの値のうち、最大値と最小値の平均を輝度とします。
輝度yは以下の計算式で求めます。
max:R,G,Bのうち最大の値
min:R,G,Bのうち最小の値
y = ( max + min ) / 2
- Gチャンネル
画素のR,G,BのうちGの値を輝度とします。
輝度yは以下の計算式で求めます。
y = G
- NTSC加重平均
アナログテレビ放送で利用されている重み付けの係数を利用して平均した値を輝度とします。
輝度yは以下の計算式で求めます。
y = 0.299 * R + 0.587 * G + 0.114 * B
- HDTV加重平均
HDTV用の重み付け係数を利用して平均し、ガンマ補正を行った値を輝度とします。
輝度yは以下の計算式で求めます。(「^」はべき乗を表します)
x = 2.2
R' = ( R ^ x ) * 0.222015
G' = ( G ^ x ) * 0.706655
B' = ( B ^ x ) * 0.071330
y = ( R' + G' + B' ) ^ ( 1 / x )
二値化
- 閾値を指定
固定閾値を指定して、R,G,Bのそれぞれで画素値を二値化します。
・パラメータ
t:閾値
Rがt以上なら R = 255。それ以外なら R = 0。
Gがt以上なら G = 255。それ以外なら G = 0。
Bがt以上なら B = 255。それ以外なら B = 0。
- 範囲を指定
画素値の範囲を指定して、R,G,Bのそれぞれで画素値を二値化します。
・パラメータ
min:範囲の下端
max:範囲の上端
Rがmin以上かつmax以下なら R = 255。それ以外なら R = 0。
Gがmin以上かつmax以下なら G = 255。それ以外なら G = 0。
Bがmin以上かつmax以下なら B = 255。それ以外なら B = 0。
3x3フィルタ
- 平滑化
以下のオペレータを用いて、画像を平滑化します。
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
- 先鋭化
- 4方向
以下のオペレータを用いて、画像を先鋭化します。
画素値が0を下回った場合は0、
255を上回った場合は255とします。
- 8方向
以下のオペレータを用いて、画像を先鋭化します。
画素値が0を下回った場合は0、
255を上回った場合は255とします。
- Roberts
- X方向
以下に示すX方向のRobertsオペレータを用いて、
画像のX方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- Y方向
以下に示すY方向のRobertsオペレータを用いて、
画像のY方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- 強さ
上記のX方向Roberts、Y方向Robertsのオペレータを適用して得られる微分値から、
以下の計算式を用いてベクトルの強さG(明るさの勾配)を求めます。
Gx:X方向の微分値
Gy:Y方向の微分値
G = √( Gx * Gx + Gy * Gy )
Gが255を上回った場合は255とします。
- Prewitt
- X方向
以下に示すX方向のPrewittオペレータを用いて、
画像のX方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- Y方向
以下に示すY方向のPrewittオペレータを用いて、
画像のY方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- 強さ
上記のX方向Prewitt、Y方向Prewittのオペレータを適用して得られる微分値から、
以下の計算式を用いてベクトルの強さG(明るさの勾配)を求めます。
Gx:X方向の微分値
Gy:Y方向の微分値
G = √( Gx * Gx + Gy * Gy )
Gが255を上回った場合は255とします。
- Sobel
- X方向
以下に示すX方向のSobelオペレータを用いて、
画像のX方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- Y方向
以下に示すY方向のSobelオペレータを用いて、
画像のY方向の微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- 強さ
上記のX方向Sobel、Y方向Sobelのオペレータを適用して得られる微分値から、
以下の計算式を用いてベクトルの強さG(明るさの勾配)を求めます。
Gx:X方向の微分値
Gy:Y方向の微分値
G = √( Gx * Gx + Gy * Gy )
Gが255を上回った場合は255とします。
- ラプラシアン
- 4方向
以下のオペレータを用いて、画像の2次微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- 8方向
以下のオペレータを用いて、画像の2次微分を計算します。
画素値が0を下回った場合は絶対値を取り、
255を上回った場合は255とします。
- メディアン
画像にメディアンフィルタを施します。
以下のa〜iの画素値を昇順に並べたときの中央値を注目画素の画素値に設定します。
変形
- 上下に反転
画像の上下を反転します。
- 左右に反転
画像の左右を反転します。
- 色の反転
画素のR,G,Bそれぞれの値を、以下の計算式で反転します。
R = 255 - R
G = 255 - G
B = 255 - B
色
- RGB
- R成分を表示
画像のR成分(赤成分)を表示します。
- G成分を表示
画像のG成分(緑成分)を表示します。
- B成分を表示
画像のB成分(青成分)を表示します。
- CMY
- C成分を表示
画像のC(シアン)成分を以下の式で計算し、表示します。
C = 255 - R
- M成分を表示
画像のM(マゼンタ)成分を以下の式で計算し、表示します。
M = 255 - G
- Y成分を表示
画像のY(イエロー)成分を以下の式で計算し、表示します。
Y = 255 - B
- YUV
- Y成分を表示
画像のY(輝度)成分を以下の式で計算し、表示します。
Y = 0.299 * R + 0.587 * G + 0.114 * B
- U成分を表示
画像のU(青の差分)成分を以下の式で計算し、表示します。
U = ( -0.169 ) * R + ( -0.331 ) * G + 0.500 * B
0〜255の範囲に収めるため、このUに127を加えた値を表示します。
- V成分を表示
画像のV(赤の差分)成分を以下の式で計算し、表示します。
V = 0.500 * R + ( -0.419 ) * G + ( -0.081 ) * B
0〜255の範囲に収めるため、このVに127を加えた値を表示します。
- HSV
- H成分を表示
画像のH(色相)成分を以下の式で計算し、表示します。
max:R,G,Bのうち最大の値
min:R,G,Bのうち最小の値
・Rが最大値の場合
H = 60 * ( G - B ) / ( max - min )
・Gが最大値の場合
H = 60 * ( B - R ) / ( max - min ) + 120
・Bが最大値の場合
H = 60 * ( R - G ) / ( max - min ) + 240
Hの値の範囲は0から360のため、この範囲を超えるHは剰余演算によってこの範囲に対応させます。
ただし max = 0 の場合、Hは未定義であるため、ここでは H = 0 とします。
また max = min の場合もHは未定義であるため、ここでは H = 0 とします。
0〜255の範囲に収めるため、H = H * 255 / 360 とした値を表示します。
- S成分を表示
画像のS(彩度)成分を以下の式で計算し、表示します。
max:R,G,Bのうち最大の値
min:R,G,Bのうち最小の値
S = ( max - min ) / max
ただし max = 0 の場合、Sは未定義であるため、ここでは S = 0 とします。
- V成分を表示
画像のV(明度)成分を以下の式で計算し、表示します。
max:R,G,Bのうち最大の値
V = max
ノイズ付加
- ガウシャンノイズ
以下に示す方法で画像にガウシャンノイズを付加します。
ガウス分布の乱数はボックス=ミューラー法で発生させています。
(「ln」は自然対数を表します)
・パラメータ
v:ガウス分布の分散
r:ノイズを加える画素の割合(%)
r1:0.0以上1.0未満の実数の一様乱数1
r2:0.0以上1.0未満の実数の一様乱数2
g = √v * √( -2.0 * ln( r1 ) ) * sin( 2.0 * π * r2 ) [ボックス=ミューラー法によるガウス分布N(0,v)の乱数]
R = R + g
G = G + g
B = B + g
画素値が0を下回った場合は0を取り、
255を上回った場合は255とします。
- インパルスノイズ
以下に示す方法で画像にインパルスノイズを付加します。
・パラメータ
r:ノイズを加える画素の割合(%)
r1:0以上255以下の整数の一様乱数1
r2:0以上255以下の整数の一様乱数2
r3:0以上255以下の整数の一様乱数3
R = r1
G = r2
B = r3
画素値が0を下回った場合は0を取り、
255を上回った場合は255とします。
- ごま塩ノイズ
以下に示す方法で画像にごま塩ノイズを付加します。
・パラメータ
r:ノイズを加える画素の割合(%)
r1:0以上1以下の整数の一様乱数
・r1 = 1 の場合
R = 255
G = 255
B = 255
・r1 = 0 の場合
R = 0
G = 0
B = 0
補正
- ガンマ補正
画像にガンマ補正を施します。(「^」はべき乗を表します)
・パラメータ
g:ガンマ値
R = 255 * ( R / 255 ) ^ ( 1 / g )
G = 255 * ( G / 255 ) ^ ( 1 / g )
B = 255 * ( B / 255 ) ^ ( 1 / g )
ヒストグラム
- ヒストグラムの表示
画像のヒストグラムを表示します。
上から順に、赤成分、緑成分、青成分のヒストグラムを表します。
それぞれの横軸は画素値、縦軸は度数に対応しており、
最も高い度数を1として正規化して表示しています。
各成分のヒストグラムの中に描かれた黒いラインは、
各成分の画素値0からの累積度数を表しています。
- 均一化(イコライゼーション)
画像のヒストグラムの均一化(イコライゼーション)を行います。
y:処理後の画素値
u:処理前の画素値
v(u):uに対する累積度数を画像の画素数で割ったもの
vmin:v(u)の最小値
y = ( v(u) - vmin ) * 255 / ( 1 - vmin )
この y を整数に変換したものが最終的な画素値になります。
以上の処理をR,G,Bそれぞれの成分に施します。