質問: C++で、opencvの中のエッジ検出プログラムを使用しているのですが、 エッジ検出処理の後に黒以外のピクセルの(場所的な)偏りを出力したいです。 エッジそのものの補正に関する記事はいくつか見つけたのですが、ピクセルそのものの偏りに関する記事を見つけられませんでした。 知っている方がいましたら、教えて頂きたいです。
回答: こんにちは. 早速の補足回答ありがとうございます. OpenCVはpythonでしか実装経験がないのでざっくりとした回答となってしまいます,ご了承くださいませ. まず,私の想定で間違っていなければですが...特別な処理は必要ありません. 画像を縦方向にスライスして,それぞれの列でゼロ出ない座標の数をカウントアップしてはいかがでしょう.forを二重にして,if画素値!=0でカウントすれば実現できます. 処理に関しては下のようなイメージです. !処理イメージ ここまでできれば,列ごとのカウントを一定区間で総計し,比較することで実現できるかと思います. 補足のなかの「ざっくりと三分割」という言葉に「分割線の判断も行わせたい」というニュアンスを感じたので,この点も補足します. このあたりが参考になるのではないでしょうか.重心検出に関しては,検出した輪郭ごとにピクセル重心(`cv::moments`を利用)を計算しています. 検出したエッジ点ごとの重心座標から,解析対象の画像に対してLeftside,Center,Rightsideで三分する境界を決定し,それぞれに対して処理を行うことで実現できると思います.