画像処理プログラミング
画像の拡大
例えば、下図のように2x2画素の画像を4x4の画像に拡大する場合、アフィン変換を使えばいいんでしょ!と、安易に考えていると、思わぬ落とし穴があったりもします。 大事なポイントとして、 ●画像の座標の原点は左上の画素の中心が原点(0.0、0....
【C#】画像の輝度値の取得
C#で画像ファイルの輝度値を取得するにはLockBits~UnlockBitsでポインタを取得して配列へコピーするなどするのが、C#では定番となっています。 例えば、下記のようなサンプルコード var bmp = new Bitmap("0...
【C#】グローバル変換を使ったアフィン変換
.NETで画像や線などを描画する時はGraphicsオブジェクトに対して描画を行いますが、このGraphicsオブジェクトの座標系をアフィン変換する処理をグローバル変換と言います。 グローバル変換された Graphicsオブジェクトに対し描...
多ビット(10Bit,12Bit,30Bit)画像データの表示、フォーマット
多ビット(10Bit、12Bitなど)の画像データは10Bitや12Bitの型が存在しないため、モノクロの場合はushort型の16bit中、下位10Bit、12Bitなどを使って画像データを格納します。 30Bitとは、R,G,Bの各色が...
ビットマップファイルフォーマット
ビットマップファイル(*.bmp)のファイルフォーマットです。 ビットマップ全体の構造 BITMAPFILEHEADER 14Byte BITMAPINFOHEADER 40Byte カラーテーブル(無い場合もあり) 4Byte*Index...
フィルタ処理の高速化アルゴリズム(縦横に処理を分ける)
前回、フィルタ処理の高速化アルゴリズム(重複した計算を行わない)で紹介した方法ではカーネルの値が全て同じでないと使えないので、今回はフィルタ処理を縦方向と横方向に分けて行う事でフィルタ処理の高速化を行う方法をガウシアンフィルタを例にとって紹...
フィルタ処理の高速化アルゴリズム(重複した計算を行わない)
画像フィルタ処理の高速化のテクニックを移動平均フィルタを例にとって紹介したいと思います。 カーネルのサイズが5×5の移動平均フィルタの場合、注目画素の周辺の5×5の輝度値を合計し、 その輝度値の合計を画素数(5×5=25)で割る処理をラスタ...