Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ImageMagickで減色する

画像処理等で、色数が減ったほうが処理が早くて助かるケースもあります。
今回は、そんなとき、どう色を落とすかについて。

実際のところ


ここに、255色ある画像があります

magick base.png  -format "(%f) -> %g %C %k\n" info:
(base.png) -> 800x1712+0+0 Zip 255

閾値を設定してcombineすれば色数がへります。

$ magick new.png  -separate -threshold 40% -combine uiui1.png
$ magick uiui1.png -format %c  histogram:info:
    1337444: (0,0,0) #000000 black
    27973: (0,0,255) #0000FF blue
    2160: (0,255,0) #00FF00 lime
    1792: (0,255,255) #00FFFF cyan
    231: (255,255,0) #FFFF00 yellow

閾値をあげれば色数が減り

$ magick new.png  -separate -threshold 60% -combine uiui1.png
$ magick uiui1.png -format %c  histogram:info:
    1368778: (0,0,0) #000000 black
    671: (0,255,0) #00FF00 lime
    151: (255,255,0) #FFFF00 yellow

下げれば色数が増える。

$ magick new.png  -separate -threshold 20% -combine uiui1.png
$ magick uiui1.png -format %c  histogram:info:
    1287847: (0,0,0) #000000 black
    22064: (0,0,255) #0000FF blue
    2969: (0,255,0) #00FF00 lime
    10123: (0,255,255) #00FFFF cyan
    269: (255,0,0) #FF0000 red
    44985: (255,0,255) #FF00FF magenta
    498: (255,255,0) #FFFF00 yellow
    845: (255,255,255) #FFFFFF white

大雑把に色エリアを判定したいときに一気に手間がへります。