私はページセグメンテーションアルゴリズムを使用しています。コードの出力は、各ゾーンのピクセルに一意の色が割り当てられた画像を書き込みます。画像を処理して、ゾーンの境界ボックスを見つけたいと思います。すべての色を見つけ、次にその色のすべてのピクセルを見つけ、次にそれらのバウンディングボックスを見つける必要があります。
以下は画像の例です。
私は現在、R、G、Bチャネルのヒストグラムから始めています。ヒストグラムはデータの場所を教えてくれます。
img = Image.open(imgfilename)
img.load()
r,g,b = img.split()
ra,ga,ba = [ np.asarray(p,dtype="uint8") for p in (r,g,b) ]
rhist,edges = np.histogram(ra,bins=256)
ghist,edges = np.histogram(ga,bins=256)
bhist,edges = np.histogram(ba,bins=256)
print np.nonzero(rhist)
print np.nonzero(ghist)
print np.nonzero(bhist)
出力:(array([0、1、128、205、255])、)(array([0、20、128、186、255])、)(array([0、128、147、150、255] )、)
私はこの時点で少し混乱しています。目視で見ると、色(0,0,0)、(1,0,0)、(0,20,0)、(128,128,128)などがあります。ゼロ以外の出力をnp.where()のピクセル値に並べ替えるにはどうすればよいですか?
3、row、col narrayを24ビットパックRGB値(r << 24 | g << 16 | b)の2次元平面に平坦化し、その配列を検索することを検討しています。それはブルートフォースでエレガントではないようです。Numpyでカラー値のバウンディングボックスを見つけるためのより良い方法はありますか?