前提・実現したいこと
1.cv.connectedComponentsで、ラベリングされた画像が生成されます。ラベルを指定すると、入力カラー画像の領域が定まります。その領域に含まれるRGBそれぞれの平均値を計算する処理を、全ての領域に対して実行し、その結果を、表にまとめてください。
2.cv.connectedComponentsでラベリングされた領域を見ると、領域間の隣接関係がわかります。各領域には、1.で平均の色が求まっています。その結果、美しい画像に関して、色の隣接関係がわかります。この色の隣接関係を、画像毎に求めてください。
発生している問題・エラーメッセージ
どのようにして値を出すか分からないので、そもそもコードをかけていない
エラーメッセージ
どのようにして値を出すか分からないので、そもそもコードをかけていない
該当のソースコード
下記の処理をPython3で考えてください: 入力カラー画像をR(x,y),G(x,y),B(x,y)、 セグメンテーション結果のレーベル画像をL(x,y)とする。 (参: L(0,0)の値は、位置(0,0)にある画素のレーベル番号、 L(0,1)の値は、位置(0,1)にある画素のレーベル番号、 ・・・) L(i,j)の値がnのとき、 入力画像の位置(i,j)にある画素が含まれる領域の番号がnであると考えることができる。したがって、L(i,j)の値を領域番号とする。 n=L(i,j)とすれば、位置(i,j)にある画素の色は( R(i,j),G(i,j), B(i,j) )となる。 すなわち、領域番号がnの領域には、色( R(i,j),G(i,j), B(i,j) )が含まれる。 以下、領域の個数をNとして、各領域の平均色を計算する。 まず、要素数がNとなる配列c, r,g,bを導入し、 初期化としてすべての要素に0を代入する。そのうえで、 すべての画素を走査し、下記の計算を反復実行する: c( L(i,j) ) = c( L(i,j) ) + 1, r( L(i,j) ) = r( L(i,j) ) + R(i,j) g( L(i,j) ) = g( L(i,j) ) + G(i,j) b( L(i,j) ) = b( L(i,j) ) + B(i,j) 上記の走査を終了した時点で、下記となる: 配列要素c(k)の値は、領域番号がkの領域に含まれる画素数(=面積)、 配列要素r(k)の値は、領域番号がkの領域に含まれる位置のRの総和、 配列要素g(k)の値は、領域番号がkの領域に含まれる位置のGの総和、 配列要素b(k)の値は、領域番号がkの領域に含まれる位置のBの総和。 よって、領域番号がkの領域の平均の色は下記となる(k=0,1,...,N-1): ( r(k)/c(k),g(k)/c(k),b(k)/c(k) )
試したこと
上記のようなことをしたいのですが、該当のソースコードという欄の一番上にもにも書いたのですが、下記の処理をpython3で考えているのですが、どういうソースコードを書けばこの処理ができるのでしょうか?初心者なのでどうすればいいか分かりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー