0. 概要
多くのセグメンテーション用画像で用いられているPNG 8-bit RGB 256c
フォーマットの画像。これを作るのって実は難しい。例えば、Imagemagicを使えばconvert xxx.png -colorspace RGB -colors 256 png8:xxx.png
もしくはconvert xxx.png -depth 8 xxx.png
なんていう変換を掛けてあげれば前述のフォーマットに変換することができるが、2c
になってしまったりする場合があったりで上手く行かない場合がある。また出来ればコマンドを叩かず、プログラム上で完結させたい。
そこでPILでよく例に挙げられるのはpilImg.convert('L')
でグレイスケールに変換する方法がある。しかし、これだとPNG +0+0 8-bit sRGB
のフォーマットになってしまい、カラースペースが異なる。
色々調べたものの、中々目的の方法にたどり着けず、試行錯誤してようやくPNG 8-bit RGB 256c
のフォーマットにする方法を見つけたので共有したいと思う。
1. PNG 8-bit RGB 256c
を作る
PILで作った3chのセグメンテーション画像をpilImg
とする。
これを以下の手順で変換する。
R, G, B = pilIMG.split()
R.save(fileName, "png")
これだけでPNG +0+0 8-bit RGB 256c
のフォーマットを作成することができる。