画像の量子化とエッジ検出

サンプル画像は, 先週スムーズ化したこれ です.

量子化

入力画像の i 行 j 列の画素の RGB 値を ri,j gi,j bi,j としましょう. このとき, 平均 a=(ri,j+gi,j+bi,j)/3 を考えます. この平均 a は 0 以上 255以下です. このとき, A を
aA
0以上64未満32
64以上128未満96
128以上192未満160
192以上256未満224
と定めます. 出力画像の i 行 j 列の画素の RGB 値を Ri,j Gi,j Bi,j すべてを A とおきましょう.

課題

作ってみよう. ただし, a から A を求める部分を 関数 int quantize(int a) にしよう.

エンボス加工

ふつうの画像から, 色の変化が大きい点を取り出すには, 隣の画素との差をとればいいのです. たとえば, 横方向の差なら,
qi,j= max(pi,(j+1)- pi,j,0)
です.

課題

作ってみよう.

エッジ検出

スムーズ化した画像で, 境界を強調するには, 上のような画像の差をとればいいのです. ただし, 縦方向でも差をとることにすると,
qi,j= pi,j+ (8*pi,j-( p(i-1),(j-1)+ p(i-1),j+ p(i-1),(j+1)+ pi,(j-1)+ pi,(j+1)+ p(i+1),(j-1)+ p(i+1),j+ p(i+1),(j+1))
となります. ただし, 0未満になったら0に, maxlevel を越えたら maxlevel にします.

課題

作ってみよう.

エッジ強調

スムーズ化した画像で, 境界を強調するには, 上のような画像の差を, もとの画像に加えればいいのです. ただし, 縦方向でも差をとることにすると,
qi,j= pi,j+ (8*pi,j-( p(i-1),(j-1)+ p(i-1),j+ p(i-1),(j+1)+ pi,(j-1)+ pi,(j+1)+ p(i+1),(j-1)+ p(i+1),j+ p(i+1),(j+1))
となります. ただし, 0未満になったら0に, maxlevel を越えたら maxlevel にします.

課題

作ってみよう.
Copyright © 2003 Saburo Higuchi. All rights reserved.
樋口三郎 http://www.math.ryukoku.ac.jp/~hig/ hig mail address