画像を白黒2値に変換して保存するアプリ
画像を開くときはファイルをドラッグアンドドロップ
対応するのは普通の画像ファイルで
画像形式はbmp、jpeg、png、tiff、gif、wdpなどの8bpp以上の画像
こういうカラー画像もグレースケールで表示される
変換した画像の保存形式
開ける画像形式とだいたい同じ
保存画像のbppを1, 8, 32から指定できる
それぞれのPixelFormatは
1bppがBlackWhite
8bppがGray8
32bppがBgr32
効率がいいのは1bpp
8と32はムダにファイルサイズが大きくなるけど一般的な画像形式
bmp
1bppを指定した場合、なぜかPixelFormatがIndexed1になってしまうけど、同じ1bppだから問題ない?
png
指定通りに保存される
gif
どれを指定しても8bppになる
jpeg
1bppと8bppが8bitグレースケール、32bppは24bppカラーになる
jpegの画質指定は75
2値画像でjpegの意味は薄いからおまけ程度
wdp
問題ない
ロスレス(可逆圧縮)設定で保存している
tiff
pngやwdp同様、指定通りに保存される
tiff形式で保存するときの圧縮形式の選択
選択できるようにしてみた
保存形式ファイルサイズ(KB)
tiff(Ccitt4)3.1
png3.7gif3.9
tiff(Default)4.2
wdp5.7
bmp6.1
jpeg30.8
上の画像を1bppで保存した時に
一番効率が良かったのはtiff画像をCcitt4って言う圧縮方式だった
jpegは不可逆圧縮だからねえ…白黒はっきりした画像には弱い
wdpの1bpp保存はWmpBitmapEncoderの初期設定だと画像が崩壊していたけど、ロスレス指定で正常に保存できた
右画像は初期値でImageQualityLevel = 0.9f;
1bpp画像に不可逆圧縮は意味が薄いってことなんだろうねえ
しきい値を決める方法に大津の2値化ってのがあるんだけど、難しくてできなかった…かわりに画像の平均輝度をしきい値にするものだけ付けてみたのが今回のアプリ
目的は1bppのBitmap画像を作ってみたかったとか、画像の減色やディザリングを試してみたかったはずなんだけど、よくわかんなくなってきたなあ
白黒2値画像はまだ続く