質問するログイン新規登録

質問編集履歴

1

目的の追加

2021/03/17 06:47

投稿

shushubox
shushubox

スコア12

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  OpenCV-python を使って入力した画像のマスクを作成する関数を作っています。具体的には左下のような複数の物体が写った画像を入力した際に特定の物体の領域だけを白、それ以外の部分を黒にした右下のようなマスクを出力するようなものです。領域抽出をしたい物体は基本的に最も大きいため、現在のソースコードでは最大の領域を白、それ以外を黒にするようにしていますが、このコードだと画像によっては別の物体の領域が抽出されたり、背景の領域のほうが大きな領域だと認識され、右下のマスクの白と黒を反転させたようなものが出力されたりしてしまいます。
4
4
  ![マスクイメージ図](63af6d1efcd94f4ce7ed79edf0ab2b8d.png)
5
- そこで、領域抽出したい物体は必ず画像の中央の座標を含んでいるということはわかっているので、中央の座標を含んだ領域を白とし、それ以外を黒とするようなコードに変えたいと思っています。
5
+ そこで、領域抽出したい物体は必ず画像の中央の座標を含んでいるということはわかっているので、中央の座標を含んだ領域を白とし、それ以外を黒とするようなコードに変えたいと思っています。それを実現するためにはどのようにコードを変更すればいいでしょうか?
6
6
  前提として、pytorch のプログラム中での関数で、関数の引数のimageは(batch size, channel, row, col)の4次元のtorch.tensorとなっています。自分のコードで入力する image の shape は (1,2,256,256) です。batch size は1なのでbatch size でのループはありません。また、仮に thresh がすべて0などの配列だった場合などのためにエラー処理としてすべて1で埋めた配列を渡すようにしています。
7
7
 
8
8
  ### 該当のソースコード