質問編集履歴

16

最終訂正

2022/09/17 01:02

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,12 +14,12 @@
14
14
 
15
15
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-15/631e2355-3106-4078-a9f8-965f974508d4.png)
16
16
  ### 発生している問題・エラーメッセージ
17
- 解決ました。
17
+ 問題は上記に示した通りですエラーはありません。
18
18
 
19
19
 
20
20
 
21
21
  ### 該当のソースコード
22
- 以下に2値化画像取得、及び誤差を求めるプログラムを示します。
22
+ 以下に2値化画像取得、及び誤差を求めるプログラムを示します。これが解決した際に訂正したコードです。
23
23
  ①2値化画像取得プログラム
24
24
  ```Python
25
25
  import cv2

15

最終修正

2022/09/17 00:59

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
  ### 該当のソースコード
22
- 以下に2値化画像取得、及び誤差を求めるプログラムを示します(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです目的にあった誤差が出ているか現在検証中です)。
22
+ 以下に2値化画像取得、及び誤差を求めるプログラムを示します。
23
23
  ①2値化画像取得プログラム
24
24
  ```Python
25
25
  import cv2
@@ -63,8 +63,10 @@
63
63
  #plt.imshow(img_diff)
64
64
 
65
65
  #img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
66
+
66
-
67
+ mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
67
-
68
+ print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
69
+ mask_img[mask_img > 0] = 1 # 0以外は1に
68
70
  files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
69
71
  for file in files:
70
72
  if file == '.DS_Store' or file == TARGET_FILE:
@@ -82,12 +84,6 @@
82
84
  print(img_diff.max())
83
85
  print(img_diff.min())
84
86
 
85
- mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
86
- print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
87
- mask_img[mask_img > 0] = 1 # 0以外は1に
88
- #img_multiply = np.multiply(img_diff,mask_img)
89
- #print(np.multiply(img_diff,mask_img))
90
-
91
87
  print((img_diff * mask_img).sum() / mask_img.sum())
92
88
  print(np.average(img_diff, weights=mask_img))
93
89
 
@@ -99,7 +95,7 @@
99
95
  ### 試したこと
100
96
 
101
97
  上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
102
- 以下に実際に出力されたものを示します。
98
+ 以下に実際に出力されたものを示します(printの部分を変えているので、出力が一部足りないところがあると思います最終的な出力が最後の4つになります)。
103
99
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
104
100
  /content/drive/MyDrive/images/
105
101
  [[ 0 90 37 ... 176 255 255]
@@ -130,6 +126,5 @@
130
126
  環境:Windows10
131
127
  ブラウザ:Google Chrome(Google Colaboratory)
132
128
  *ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
133
- *ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
134
129
  *急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
135
130
 

14

コードの修正

2022/09/15 14:34

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -101,7 +101,7 @@
101
101
  上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
102
102
  以下に実際に出力されたものを示します。
103
103
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
104
- /content/drive/MyDrive/1/
104
+ /content/drive/MyDrive/images/
105
105
  [[ 0 90 37 ... 176 255 255]
106
106
  [190 226 225 ... 176 255 255]
107
107
  [226 1 146 ... 176 255 255]

13

コードの修正

2022/09/15 14:33

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
  #IMG_SIZE = (312, 312)
47
47
 
48
48
  target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
49
- target_img = cv2.imread("/content/drive/MyDrive/1/target.PNG",0)
49
+ target_img = cv2.imread("/content/drive/MyDrive/images/target.PNG",0)
50
50
  print(target_img)
51
51
  #target_img = cv2.resize(target_img, IMG_SIZE)
52
52
  #target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う

12

コードの修正

2022/09/15 14:32

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -41,7 +41,7 @@
41
41
 
42
42
  TARGET_FILE = 'target.PNG'
43
43
  #print(TARGET_FILE)
44
- IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/1/'#imagesフォルダの中にあるファイルが比較対象
44
+ IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/images/'#imagesフォルダの中にあるファイルが比較対象
45
45
  print(IMG_DIR)
46
46
  #IMG_SIZE = (312, 312)
47
47
 

11

コードの修正

2022/09/15 14:30

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
  import numpy as np
27
27
  from pylab import * #imshowが無いというエラー防止
28
28
 
29
- img = cv2.imread("/content/drive/MyDrive/mask_before.png")
29
+ img = cv2.imread("/content/drive/MyDrive/mask_before.png",0)
30
30
 
31
31
  ret, thresh = cv2.threshold(img, 168, 255, cv2.THRESH_BINARY)#1つめの数以上の画素値は2つ目の数の画素値にする
32
32
  thresh[thresh > 0] = 255 # 0以外は255に

10

エラー問題の修正

2022/09/15 14:29

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,12 +14,12 @@
14
14
 
15
15
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-15/631e2355-3106-4078-a9f8-965f974508d4.png)
16
16
  ### 発生している問題・エラーメッセージ
17
+ 解決しました。
17
18
 
18
- プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。目的にあった誤差が出ているか現在検証中です)。
19
19
 
20
20
 
21
21
  ### 該当のソースコード
22
- 以下に2値化画像取得、及び誤差を求めるプログラムを示します。
22
+ 以下に2値化画像取得、及び誤差を求めるプログラムを示します(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです目的にあった誤差が出ているか現在検証中です)。
23
23
  ①2値化画像取得プログラム
24
24
  ```Python
25
25
  import cv2

9

出力結果追加等大幅な修正

2022/09/15 14:28

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -15,27 +15,43 @@
15
15
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-15/631e2355-3106-4078-a9f8-965f974508d4.png)
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
- エラー問題を改善する事は出来ていませんが、プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。勿論、それまのコードのミス指摘も大歓迎です)。
18
+ プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。目的にあった誤差が出ているか現在検証中です)。
19
19
 
20
20
 
21
21
  ### 該当のソースコード
22
- 以下にプログラムを示します。しかし上記で述べた通り、恐らく不十分なコードです。
22
+ 以下に2値化画像取得、及び誤差を求めるプログラムを示します。
23
+ ①2値化画像取得プログラム
24
+ ```Python
25
+ import cv2
26
+ import numpy as np
27
+ from pylab import * #imshowが無いというエラー防止
28
+
29
+ img = cv2.imread("/content/drive/MyDrive/mask_before.png")
30
+
31
+ ret, thresh = cv2.threshold(img, 168, 255, cv2.THRESH_BINARY)#1つめの数以上の画素値は2つ目の数の画素値にする
32
+ thresh[thresh > 0] = 255 # 0以外は255に
33
+ cv2.imwrite("/content/drive/MyDrive/mask.png", thresh)
34
+ ```
35
+ ②誤差を求めるプログラム
23
36
  ```Python
24
37
  import cv2
25
38
  import os
26
39
  import numpy as np
27
40
  import matplotlib.pyplot as plt
28
41
 
29
- TARGET_FILE = 'target.png'
42
+ TARGET_FILE = 'target.PNG'
43
+ #print(TARGET_FILE)
30
- IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/images/'#imagesフォルダの中にあるファイルが比較対象
44
+ IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/1/'#imagesフォルダの中にあるファイルが比較対象
45
+ print(IMG_DIR)
31
- IMG_SIZE = (312, 312)
46
+ #IMG_SIZE = (312, 312)
32
47
 
33
48
  target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
34
- target_img = cv2.imread(target_img_path,0)
49
+ target_img = cv2.imread("/content/drive/MyDrive/1/target.PNG",0)
50
+ print(target_img)
35
51
  #target_img = cv2.resize(target_img, IMG_SIZE)
36
52
  #target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
37
53
 
38
- #target_img = int(target_img)
54
+ #target_img = int(target_img_origin)
39
55
  target_img[target_img <= 36] = 26
40
56
  target_img[((target_img >= 37) & (target_img <= 139))] = 25
41
57
  target_img[((target_img >= 140) & (target_img <= 224))] = 24
@@ -67,9 +83,10 @@
67
83
  print(img_diff.min())
68
84
 
69
85
  mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
86
+ print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
70
87
  mask_img[mask_img > 0] = 1 # 0以外は1に
71
- #img_multiply = np.multiply(img_diff,mask_img)
88
+ #img_multiply = np.multiply(img_diff,mask_img)
72
- #print(np.multiply(img_diff,mask_img))
89
+ #print(np.multiply(img_diff,mask_img))
73
90
 
74
91
  print((img_diff * mask_img).sum() / mask_img.sum())
75
92
  print(np.average(img_diff, weights=mask_img))
@@ -81,7 +98,31 @@
81
98
 
82
99
  ### 試したこと
83
100
 
84
- 上記のコードを途中まで書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていま。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
101
+ 上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
102
+ 以下に実際に出力されたものを示します。
103
+ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
104
+ /content/drive/MyDrive/1/
105
+ [[ 0 90 37 ... 176 255 255]
106
+ [190 226 225 ... 176 255 255]
107
+ [226 1 146 ... 176 255 255]
108
+ ...
109
+ [168 168 168 ... 164 255 255]
110
+ [168 168 168 ... 167 255 255]
111
+ [168 168 168 ... 188 255 255]]
112
+ TARGET_FILE: target.PNG
113
+ 3
114
+ -3
115
+ [[ 0 0 0 ... 255 255 255]
116
+ [255 255 253 ... 255 255 255]
117
+ [255 0 2 ... 255 255 255]
118
+ ...
119
+ [ 0 0 0 ... 2 254 255]
120
+ [ 0 0 0 ... 0 254 255]
121
+ [ 0 0 0 ... 255 255 255]]
122
+ 0.10114034578226946
123
+ 0.10114034578226946
124
+ 0.21099301078391514
125
+ 0.21099301078391514
85
126
 
86
127
  ### 補足情報(FW/ツールのバージョンなど)
87
128
 
@@ -90,5 +131,5 @@
90
131
  ブラウザ:Google Chrome(Google Colaboratory)
91
132
  *ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
92
133
  *ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
93
- *急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。未熟な私にご教授いただければ幸いです。申し訳ございません。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
134
+ *急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
94
135
 

8

コードのインデント修正

2022/09/15 06:44

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -62,20 +62,20 @@
62
62
  comparing_img[((comparing_img>=140) & (comparing_img<=224))] = 24
63
63
  comparing_img[comparing_img>=225] = 23
64
64
 
65
- img_diff = target_img.astype(int) - comparing_img.astype(int)
65
+ img_diff = target_img.astype(int) - comparing_img.astype(int)
66
- print(img_diff.max())
66
+ print(img_diff.max())
67
- print(img_diff.min())
67
+ print(img_diff.min())
68
68
 
69
- mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
69
+ mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
70
- mask_img[mask_img > 0] = 1 # 0以外は1に
70
+ mask_img[mask_img > 0] = 1 # 0以外は1に
71
- #img_multiply = np.multiply(img_diff,mask_img)
71
+ #img_multiply = np.multiply(img_diff,mask_img)
72
- #print(np.multiply(img_diff,mask_img))
72
+ #print(np.multiply(img_diff,mask_img))
73
73
 
74
- print((img_diff * mask_img).sum() / mask_img.sum())
74
+ print((img_diff * mask_img).sum() / mask_img.sum())
75
- print(np.average(img_diff, weights=mask_img))
75
+ print(np.average(img_diff, weights=mask_img))
76
76
 
77
- print(np.abs(img_diff * mask_img).sum() / mask_img.sum())
77
+ print(np.abs(img_diff * mask_img).sum() / mask_img.sum())
78
- print(np.average(np.abs(img_diff), weights=mask_img))
78
+ print(np.average(np.abs(img_diff), weights=mask_img))
79
79
 
80
80
  ```
81
81
 

7

コードの追加

2022/09/15 03:24

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -15,35 +15,36 @@
15
15
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-15/631e2355-3106-4078-a9f8-965f974508d4.png)
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
- 途中プログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりですこの後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。
18
+ エラー問題を改善する事は出来ていせんが、プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。勿論、それまでのコードのミス指摘も大歓迎です)。
19
19
 
20
20
 
21
21
  ### 該当のソースコード
22
- 以下に途中まででありますがプログラムを示します。しかし上記で述べた通り、不十分なコードです。
22
+ 以下にプログラムを示します。しかし上記で述べた通り、恐らく不十分なコードです。
23
23
  ```Python
24
24
  import cv2
25
25
  import os
26
26
  import numpy as np
27
27
  import matplotlib.pyplot as plt
28
28
 
29
- TARGET_FILE = '05.png'
29
+ TARGET_FILE = 'target.png'
30
- IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'#imagesフォルダの中にあるファイルが比較対象
30
+ IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/images/'#imagesフォルダの中にあるファイルが比較対象
31
- #IMG_SIZE = (200, 200)
31
+ IMG_SIZE = (312, 312)
32
32
 
33
33
  target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
34
34
  target_img = cv2.imread(target_img_path,0)
35
35
  #target_img = cv2.resize(target_img, IMG_SIZE)
36
36
  #target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
37
37
 
38
+ #target_img = int(target_img)
38
- target_img[target_img<=36] = 26
39
+ target_img[target_img <= 36] = 26
39
- target_img[((target_img>=37) & (target_img<=139))] = 25
40
+ target_img[((target_img >= 37) & (target_img <= 139))] = 25
40
- target_img[((target_img>=140) & (target_img<=224))] = 24
41
+ target_img[((target_img >= 140) & (target_img <= 224))] = 24
41
- target_img[target_img>=225] = 23
42
+ target_img[target_img >= 225] = 23
42
43
 
43
44
  print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
44
45
 
45
- img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
46
+ #img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
46
- plt.imshow(img_diff)
47
+ #plt.imshow(img_diff)
47
48
 
48
49
  #img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
49
50
 
@@ -57,13 +58,25 @@
57
58
  comparing_img = cv2.imread(comparing_img_path,0)
58
59
 
59
60
  comparing_img[comparing_img<=36] = 26
60
- comparing_img[(comparing_img>=37) & (comparing_img<=139))] = 25
61
+ comparing_img[((comparing_img>=37) & (comparing_img<=139))] = 25
61
- comparing_img[((comparing_img>=140) & comparing_img<=224))] = 24
62
+ comparing_img[((comparing_img>=140) & (comparing_img<=224))] = 24
62
63
  comparing_img[comparing_img>=225] = 23
63
64
 
64
- img_diff = target_img.astype(int) - comparing_img.astype(int)
65
+ img_diff = target_img.astype(int) - comparing_img.astype(int)
65
- print(img_diff.max())
66
+ print(img_diff.max())
66
- print(img_diff.min())
67
+ print(img_diff.min())
68
+
69
+ mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
70
+ mask_img[mask_img > 0] = 1 # 0以外は1に
71
+ #img_multiply = np.multiply(img_diff,mask_img)
72
+ #print(np.multiply(img_diff,mask_img))
73
+
74
+ print((img_diff * mask_img).sum() / mask_img.sum())
75
+ print(np.average(img_diff, weights=mask_img))
76
+
77
+ print(np.abs(img_diff * mask_img).sum() / mask_img.sum())
78
+ print(np.average(np.abs(img_diff), weights=mask_img))
79
+
67
80
  ```
68
81
 
69
82
  ### 試したこと

6

画像の変更

2022/09/14 23:49

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ![予測した画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-10/778c2646-08a8-49c0-9a98-a5b313725d99.png)
14
14
 
15
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-14/7ebda61f-f0b3-4c8b-bf9f-f4714573d175.png)
15
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-15/631e2355-3106-4078-a9f8-965f974508d4.png)
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
18
  途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。

5

画像の変更

2022/09/14 04:38

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ![予測した画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-10/778c2646-08a8-49c0-9a98-a5b313725d99.png)
14
14
 
15
- ![2値化画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-14/dd21e83e-12d7-45f4-a75e-9abb8f093d10.png)
15
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-14/7ebda61f-f0b3-4c8b-bf9f-f4714573d175.png)
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
18
  途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。

4

画像の追加

2022/09/14 02:13

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -7,11 +7,12 @@
7
7
  下の2枚の画像において陸地部分の温度の誤差がどれだけあるか、誤差の単位を温度で出力する方法をご教示いただけますでしょうか。それには先ず黒いところが26度、灰色のところが25度、薄い灰色が24度であるという事を含めないといけないと思います。無知で大変申し訳ございませんが、よろしくお願いいたします。
8
8
  *今回は一例として示す為に以下から画像を取得しました。
9
9
  URL:https://www.jma.go.jp/jma/kishou/know/suikei_kishou/kaisetsu.html
10
- この画像をグレースケール画像に変換したものを、添付した画像としています。この添付した画像での温度の誤差を示したいと考えてください。
10
+ この画像をグレースケール画像に変換したものを、添付した画像としています。この添付した画像での温度の誤差を示したいと考えてください。1番下の画像が2値化したものです(海を黒、それ以外を255にしただけで境界線等は黒のままです)
11
11
  ![本来の画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-10/286337c6-c008-403f-a30d-fabe24ec7e4b.png)
12
12
 
13
13
  ![予測した画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-10/778c2646-08a8-49c0-9a98-a5b313725d99.png)
14
14
 
15
+ ![2値化画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-14/dd21e83e-12d7-45f4-a75e-9abb8f093d10.png)
15
16
  ### 発生している問題・エラーメッセージ
16
17
 
17
18
  途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。

3

コードの修正

2022/09/13 02:07

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -41,13 +41,28 @@
41
41
 
42
42
  print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
43
43
 
44
- img_diff = cv2.absdiff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
44
+ img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
45
45
  plt.imshow(img_diff)
46
46
 
47
47
  #img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
48
48
 
49
49
 
50
50
  files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
51
+ for file in files:
52
+ if file == '.DS_Store' or file == TARGET_FILE:
53
+ continue
54
+
55
+ comparing_img_path = IMG_DIR + file
56
+ comparing_img = cv2.imread(comparing_img_path,0)
57
+
58
+ comparing_img[comparing_img<=36] = 26
59
+ comparing_img[(comparing_img>=37) & (comparing_img<=139))] = 25
60
+ comparing_img[((comparing_img>=140) & comparing_img<=224))] = 24
61
+ comparing_img[comparing_img>=225] = 23
62
+
63
+ img_diff = target_img.astype(int) - comparing_img.astype(int)
64
+ print(img_diff.max())
65
+ print(img_diff.min())
51
66
  ```
52
67
 
53
68
  ### 試したこと

2

プログラム中心に修正

2022/09/12 13:26

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,43 +14,45 @@
14
14
 
15
15
  ### 発生している問題・エラーメッセージ
16
16
 
17
- 私が試しに動作させたプログラムではエラが発生する事はありせんた。しかしこのプログラムは私目的としている温度に対応した誤差ではありません。
17
+ 途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差デタ取得までを書いつもりです)。この後のプログラムの書き方分かりません(勿論、それまでのコードのミス指摘も大歓迎です)
18
18
 
19
19
 
20
20
  ### 該当のソースコード
21
- 以下に類似率を出すプログラムを示します。しかし上記で述べた通り、私が望む温度に対応した誤差はありません
21
+ 以下に途中まででありまプログラムを示します。しかし上記で述べた通り、不十分なコード
22
22
  ```Python
23
23
  import cv2
24
24
  import os
25
+ import numpy as np
26
+ import matplotlib.pyplot as plt
25
27
 
26
28
  TARGET_FILE = '05.png'
27
- IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'
29
+ IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'#imagesフォルダの中にあるファイルが比較対象
28
- IMG_SIZE = (200, 200)
30
+ #IMG_SIZE = (200, 200)
29
31
 
30
- target_img_path = IMG_DIR + TARGET_FILE
32
+ target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
31
- target_img = cv2.imread(target_img_path)
33
+ target_img = cv2.imread(target_img_path,0)
32
- target_img = cv2.resize(target_img, IMG_SIZE)
34
+ #target_img = cv2.resize(target_img, IMG_SIZE)
33
- target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256])
35
+ #target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
34
36
 
37
+ target_img[target_img<=36] = 26
35
- print('TARGET_FILE: %s' % (TARGET_FILE))
38
+ target_img[((target_img>=37) & (target_img<=139))] = 25
39
+ target_img[((target_img>=140) & (target_img<=224))] = 24
40
+ target_img[target_img>=225] = 23
36
41
 
37
- files = os.listdir(IMG_DIR)
38
- for file in files:
39
- if file == '.DS_Store' or file == TARGET_FILE:
42
+ print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
40
- continue
41
43
 
42
- comparing_img_path = IMG_DIR + file
43
- comparing_img = cv2.imread(comparing_img_path)
44
- comparing_img = cv2.resize(comparing_img, IMG_SIZE)
44
+ img_diff = cv2.absdiff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
45
- comparing_hist = cv2.calcHist([comparing_img], [0], None, [256], [0, 256])
45
+ plt.imshow(img_diff)
46
46
 
47
- ret = cv2.compareHist(target_hist, comparing_hist, 0)
47
+ #img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
48
+
49
+
48
- print(file, ret)
50
+ files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
49
51
  ```
50
52
 
51
53
  ### 試したこと
52
54
 
53
- 取り敢えず類似率出しした。類似率は1以下とし、全く同じ場合は1が出力される様にしました。同じ場合ない場合は例えば0.56869といった様な出力がされる様にしました。該当コードを上記に記述します。しかしこれでは誤差の単位が無く、これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
55
+ 上記のコード途中まで書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
54
56
 
55
57
  ### 補足情報(FW/ツールのバージョンなど)
56
58
 
@@ -58,5 +60,6 @@
58
60
  環境:Windows10
59
61
  ブラウザ:Google Chrome(Google Colaboratory)
60
62
  *ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
63
+ *ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
61
64
  *急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。未熟な私にご教授いただければ幸いです。申し訳ございません。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
62
65
 

1

情報の追加

2022/09/12 04:28

投稿

Vamosj1VIVA
Vamosj1VIVA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  ### 試したこと
52
52
 
53
- 取り敢えず類似率を出しました。類似率は1以下とし、全く同じ場合は1が出力される様にしました。同じ場合でない場合は例えば0.56869といった様な出力がされる様にしました。該当コードを上記に記述します。しかしこれでは誤差の単位が無く、これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。
53
+ 取り敢えず類似率を出しました。類似率は1以下とし、全く同じ場合は1が出力される様にしました。同じ場合でない場合は例えば0.56869といった様な出力がされる様にしました。該当コードを上記に記述します。しかしこれでは誤差の単位が無く、これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
54
54
 
55
55
  ### 補足情報(FW/ツールのバージョンなど)
56
56