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

質問編集履歴

2

2021/06/19 10:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,4 @@
1
1
  ### 前提・実現したいこと
2
- ![イメージ説明](7de56ba6dfce39b318efce897638de22.png)
3
- ↑のような顕微鏡の拡大図から、割れの実測値を出力したい。
4
- そのための手段として、画像内(スクリーンショットで必要な領域を切り取ることを想定)の特定の色の線分の長さをpython,opencvを用いることで出力する、ということが実現したいです。
5
-
6
2
  以下の質問にいただいた回答
7
3
   URL: https://teratail.com/questions/342736
8
4
  から、実測値を出力することまではできました。
@@ -14,8 +10,6 @@
14
10
   ここからが理解できていません。どのような計算プロセスを経て結果が出力さているのかがわからず、
15
11
   そのため、なぜ誤差が生じているのかもわかっていません。
16
12
 
17
- ・誤差という表記をしましたが、真値は実測値(モニタ上の線を定規で直接測った値)としています。
18
-
19
13
  ### 発生している問題・エラーメッセージ
20
14
  長めの線や平行な線ならほとんど誤差なく検出できます。しかし、
21
15
  ・↑の画像のように線が斜めに交差している場合(実際はもう少し複雑に分岐)

1

質問の問題点の改善

2021/06/19 10:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,15 @@
7
7
   URL: https://teratail.com/questions/342736
8
8
  から、実測値を出力することまではできました。
9
9
 
10
+ 補足
11
+ ・二値化、contourによる輪郭の検出
12
+  ここまでは可視化することによって正しい処理がなされていることが確認できました。
13
+ ・boudingRect,及びnumpyによるベクトルの算出
14
+  ここからが理解できていません。どのような計算プロセスを経て結果が出力さているのかがわからず、
15
+  そのため、なぜ誤差が生じているのかもわかっていません。
16
+
17
+ ・誤差という表記をしましたが、真値は実測値(モニタ上の線を定規で直接測った値)としています。
18
+
10
19
  ### 発生している問題・エラーメッセージ
11
20
  長めの線や平行な線ならほとんど誤差なく検出できます。しかし、
12
21
  ・↑の画像のように線が斜めに交差している場合(実際はもう少し複雑に分岐)
@@ -83,12 +92,22 @@
83
92
  ```
84
93
 
85
94
  ### 試したこと
86
- 線を引いた後は実際の画像を無視しても問題ないため、
87
- ・線をばらす
88
- ・切り取る領域を小さくし、線を密集させる
89
- など、なべくが別々、且つ大きめに検出できるように線のみ移動させる等たのですが、効果はいひとつでした。
95
+ contourの結果を可視化すことで目標とする分(赤/青とも)が正しく認識できていこと確認しました。
90
- コードに関しては他の手法を調べるなどしましたが、精度が上がるような手法がどれなのか
91
- 判別つかず、とりえず試しみようにまく動かせない、といた状態です。
96
+ 線分どんな状態でても輪郭の検出では上手ています。
97
+ しかし、実現したいことにあるような
98
+  ・短めの線が多数
99
+  ・線同士が重なり合っている
100
+ といった状況だと出力される値(boudingRect→numpyによる計算)に誤差が生じてしまいます。
101
+
102
+ contourAreaによる面積の算出、arcLengthによる周囲長さの算出も試しましたが、
103
+   面積:以下のような状況で、何故か出力が0になってしまう事がある
104
+    ・輪郭を正しく認識できている
105
+    ・引数として渡しているcontourの結果(contours)の中身には座標の値が入っている
106
+   周囲長さ:基準線は線分を1本のみ、赤い線分は複数検出ため、赤い線分の値が大きくなってしまう
107
+ といった問題が発生しており、上手く行っていません。
108
+
109
+ boudingRect,及びnumpyによるベクトルの算出については自分なりに調べてみましたが、最終的に何を求めているのか、理解ができていません。
110
+
92
111
  ### 補足情報(FW/ツールのバージョンなど)
93
112
  python3.8
94
113
  anaconda