質問編集履歴

15

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  ```
82
82
 
83
- ###追記(1),(2),(3),(3.1)あります
83
+ ###追記(1),(2),(3),(3.1),(4)あります
84
84
 
85
85
 
86
86
 

14

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -257,3 +257,19 @@
257
257
  すると、PILのと同じ値に変換できた。
258
258
 
259
259
  どうやら定数が掛けているよう。
260
+
261
+
262
+
263
+ ###追記(4)2018/10/19
264
+
265
+ そもそもtifファイルがtifに準拠したフォーマットになっているか確認する。
266
+
267
+ tifをバイナリエディタで開き中にあるタグの情報を確認する。
268
+
269
+ その後フリーのtif解析ソフトを使って確認してみる。(自信なかったので...)
270
+
271
+
272
+
273
+ 以下、その結果を貼ります。
274
+
275
+ ![イメージ説明](3505b99a1c678734c55dc196886c68a7.png)

13

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  ```
82
82
 
83
- ###追記(1),(2)あります
83
+ ###追記(1),(2),(3),(3.1)あります
84
84
 
85
85
 
86
86
 

12

追記

2018/10/26 05:57

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -2,217 +2,227 @@
2
2
 
3
3
 
4
4
 
5
-
5
+ しかし、表示される画像は同じなのに、
6
+
6
-
7
+ 2つのデータが違う値で出てくるのです。
8
+
9
+
10
+
11
+ データを見るにPILの方が正しい。
12
+
13
+ 上がopencvを、下がPILを使ったコードになります。
14
+
15
+
16
+
17
+ お詳しい方いらっしゃいましたら、ご教授頂ければと思います。
18
+
19
+ ```Python3
20
+
21
+ import cv2
22
+
23
+ import numpy as np
24
+
25
+ from matplotlib import pyplot as plt
26
+
27
+
28
+
29
+ img = cv2.imread('data.tif',-1)
30
+
31
+
32
+
33
+ plt.imshow(img)
34
+
35
+
36
+
37
+ #######データを確認##############
38
+
39
+ img[0][0]
40
+
41
+ #9.25e-43
42
+
43
+ ```
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+ ```python3
52
+
53
+ import matplotlib.pyplot as plt
54
+
55
+ import numpy as np
56
+
57
+ from PIL import Image
58
+
59
+ %matplotlib inline
60
+
61
+
62
+
63
+ im = Image.open('data.tif')
64
+
65
+ #im.show()
66
+
67
+ imarr = np.array(im)
68
+
69
+
70
+
71
+ plt.imshow(imarr)
72
+
73
+
74
+
75
+ #######データを確認##############
76
+
77
+ imarr[0][0]
78
+
79
+ #660
80
+
81
+ ```
82
+
83
+ ###追記(1),(2)あります
84
+
85
+
86
+
87
+ ###追記(1)
88
+
89
+ Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
90
+
91
+ 調べて見ると
92
+
93
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
94
+
95
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
96
+
97
+ どこかおかしなところがありますでしょうか。(追記(2)で一応対処済み)
98
+
99
+
100
+
101
+ ```python3
102
+
103
+ %matplotlib inline
104
+
105
+ import cv2
106
+
107
+ from PIL import Image
108
+
109
+ import numpy as np
110
+
111
+ from matplotlib import pyplot as plt
112
+
113
+
114
+
115
+ CV_im =cv2.imread('data.tiff',-1)
116
+
117
+
118
+
119
+ #BGRからRGBへ変換
120
+
121
+ CV_img_RGB = CV_im[:, :, ::-1].copy()
122
+
123
+
124
+
125
+ #変換
126
+
127
+ CV2PIL_normalize=Image.fromarray(CV_im_RGB)
128
+
129
+
130
+
131
+ #描画
132
+
133
+ plt.imshow(CV2PIL_normalize)
134
+
135
+ ```
136
+
137
+ ```error
138
+
139
+ IndexError Traceback (most recent call last)
140
+
141
+ <ipython-input-108-5afa93a697bc> in <module>()
142
+
143
+ 8
144
+
145
+ 9 #BGRからRGBへ変換
146
+
147
+ ---> 10 CV_img_RGB = CV_im[:, :, ::-1].copy()
148
+
149
+ 11
150
+
151
+ 12 #変換
152
+
153
+
154
+
155
+ IndexError: too many indices for array
156
+
157
+ ```
158
+
159
+
160
+
161
+ ###追記(2)2018/10/26
162
+
163
+
164
+
165
+ > ------追記(1)より
166
+
167
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
168
+
169
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
170
+
171
+
172
+
173
+ これは
174
+
175
+ `CV_img_RGB = CV_im[:, ::-1].copy()`
176
+
177
+ に変えることで、正常に動くようになりました。
178
+
179
+ `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
180
+
181
+
182
+
183
+ これによって表示された画像は、変換前から変化がありました。
184
+
185
+ ただ、imarrの(PILで読み込んだ正しい)データと比べると
186
+
187
+ CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
188
+
189
+ (しかも見当違いに違う、e-43も違うとは...)
190
+
191
+ ```Python3
192
+
193
+ print(imarr[0][0])
194
+
195
+ #660
196
+
197
+
198
+
199
+ print(CV_im_RGB[0][0])
200
+
201
+ #6.32e-43
202
+
203
+ ```
204
+
205
+
206
+
7
- > ・追記(3)2018/10/26
207
+ ###追記(3)2018/10/26
8
208
 
9
209
  取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。カウント数の範囲は、-2から177880です。
10
210
 
11
-
12
-
13
-
14
-
15
-
16
-
17
- しかし、表示される画像は同じなのに、
18
-
19
- 2のデータが違う値で出るのです。
20
-
21
-
22
-
23
- データを見るにPILの方が正しい。
24
-
25
- 上がopencvを下がPIL使っコードす。
26
-
27
-
28
-
29
- お詳しい方いらっしゃいましたら、ご教授頂ければと思います。
30
-
31
- ```Python3
32
-
33
- import cv2
34
-
35
- import numpy as np
36
-
37
- from matplotlib import pyplot as plt
38
-
39
-
40
-
41
- img = cv2.imread('data.tif',-1)
42
-
43
-
44
-
45
- plt.imshow(img)
46
-
47
-
48
-
49
- #######データを確認##############
50
-
51
- img[0][0]
52
-
53
- #9.25e-43
54
-
55
- ```
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
- ```python3
64
-
65
- import matplotlib.pyplot as plt
66
-
67
- import numpy as np
68
-
69
- from PIL import Image
70
-
71
- %matplotlib inline
72
-
73
-
74
-
75
- im = Image.open('data.tif')
76
-
77
- #im.show()
78
-
79
- imarr = np.array(im)
80
-
81
-
82
-
83
- plt.imshow(imarr)
84
-
85
-
86
-
87
- #######データを確認##############
88
-
89
- imarr[0][0]
90
-
91
- #660
92
-
93
- ```
94
-
95
- ###追記(1),(2)あります
96
-
97
-
98
-
99
- ###追記(1)
100
-
101
- Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
102
-
103
- 調べて見ると
104
-
105
- `CV_img_RGB = CV_im[:, :, ::-1].copy()`
106
-
107
- を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
108
-
109
- どこかおかしなところがありますでしょうか。(追記(2)で一応対処済み)
110
-
111
-
112
-
113
- ```python3
114
-
115
- %matplotlib inline
116
-
117
- import cv2
118
-
119
- from PIL import Image
120
-
121
- import numpy as np
122
-
123
- from matplotlib import pyplot as plt
124
-
125
-
126
-
127
- CV_im =cv2.imread('data.tiff',-1)
128
-
129
-
130
-
131
- #BGRからRGBへ変換
132
-
133
- CV_img_RGB = CV_im[:, :, ::-1].copy()
134
-
135
-
136
-
137
- #変換
138
-
139
- CV2PIL_normalize=Image.fromarray(CV_im_RGB)
140
-
141
-
142
-
143
- #描画
144
-
145
- plt.imshow(CV2PIL_normalize)
146
-
147
- ```
148
-
149
- ```error
150
-
151
- IndexError Traceback (most recent call last)
152
-
153
- <ipython-input-108-5afa93a697bc> in <module>()
154
-
155
- 8
156
-
157
- 9 #BGRからRGBへ変換
158
-
159
- ---> 10 CV_img_RGB = CV_im[:, :, ::-1].copy()
160
-
161
- 11
162
-
163
- 12 #変換
164
-
165
-
166
-
167
- IndexError: too many indices for array
168
-
169
- ```
170
-
171
-
172
-
173
- ###追記(2)2018/10/26
174
-
175
-
176
-
177
- > ------追記(1)より
178
-
179
- `CV_img_RGB = CV_im[:, :, ::-1].copy()`
180
-
181
- を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
182
-
183
-
184
-
185
- これは
186
-
187
- `CV_img_RGB = CV_im[:, ::-1].copy()`
188
-
189
- に変えることで、正常に動くようになりました。
190
-
191
- `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
192
-
193
-
194
-
195
- これによって表示された画像は、変換前から変化がありました。
196
-
197
- ただ、imarrの(PILで読み込んだ正しい)データと比べると
198
-
199
- CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
200
-
201
- (しかも見当違いに違う、e-43も違うとは...)
202
-
203
- ```Python3
204
-
205
- print(imarr[0][0])
206
-
207
- #660
208
-
209
-
210
-
211
- print(CV_im_RGB[0][0])
212
-
213
- #6.32e-43
214
-
215
- ```
211
+ ですので、opencvもPILも配列に変換した後は高さ×幅の2次元になります。
212
+
213
+
214
+
215
+ RGBのように3つあるわけではないので、opencvやPILを使うべきデータではないということなのでしょうか。そもそも一般的なtifファイルではない(グレースケールの場合0~255)ので取扱いも違うのでしょうか。
216
+
217
+
218
+
219
+ 最終的に作りたいプログラムは、カウント数の範囲(-2から177880)のデータを画像とし表示させ為に(グレースケール場合)256に分割して表示したいということです。
220
+
221
+ その為、minmumとmaximumを調整するプログラムを作りたいと思いました。
222
+
223
+
224
+
225
+ minmumは最小値で固定してmaximum200000にしり100000したと変更させ、それを256で区別して、表示させる。という感じです。
216
226
 
217
227
 
218
228
 

11

追記

2018/10/26 05:56

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  > ・追記(3)2018/10/26
8
8
 
9
- 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。
9
+ 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。カウント数の範囲は、-2から177880です。
10
10
 
11
11
 
12
12
 
@@ -238,7 +238,7 @@
238
238
 
239
239
  660(`imarr[0][0]`)/9.25e-43(`img[0][0]`)
240
240
 
241
- を全けてみた。
241
+ を全配列けてみた。
242
242
 
243
243
  `img * 660/9.25e-43`
244
244
 

10

追記

2018/10/26 05:30

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -216,6 +216,34 @@
216
216
 
217
217
 
218
218
 
219
+ ###追記(3.1)2018/10/26
220
+
221
+ 上の追記(3)でも書いたように元データのtifが1色(カウント数)相当だったため、
222
+
219
- どうやっら同じようにるのかわかりません。。。
223
+ 質問当初に書いたように読み込みを行った場合を考
224
+
220
-
225
+ ・PILの場合
226
+
227
+ `imarr[0][0]` = 660 あってる
228
+
229
+
230
+
231
+ ・opencvの場合
232
+
233
+ `img[0][0]` = 9.25e-43 良くわからない
234
+
235
+
236
+
237
+ そこでopencvのデータに(img[0][0]のデータが660になる)
238
+
239
+ 660(`imarr[0][0]`)/9.25e-43(`img[0][0]`)
240
+
241
+ を全部にかけてみた。
242
+
243
+ `img * 660/9.25e-43`
244
+
245
+
246
+
247
+ すると、PILのと同じ値に変換できた。
248
+
221
- tif画像処理むずし...
249
+ どうやら定数が掛けているよう。

9

追記

2018/10/26 02:34

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
 
4
4
 
5
+
6
+
7
+ > ・追記(3)2018/10/26
8
+
9
+ 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。
10
+
11
+
12
+
13
+
14
+
15
+
16
+
5
17
  しかし、表示される画像は同じなのに、
6
18
 
7
19
  2つのデータが違う値で出てくるのです。

8

追記

2018/10/26 02:15

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -186,7 +186,7 @@
186
186
 
187
187
  CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
188
188
 
189
- (しかも見当違いに違う、e-43とは...)
189
+ (しかも見当違いに違う、e-43も違うとは...)
190
190
 
191
191
  ```Python3
192
192
 

7

追記

2018/10/26 01:15

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
96
96
 
97
- どこかおかしなところがありますでしょうか。
97
+ どこかおかしなところがありますでしょうか。(追記(2)で一応対処済み)
98
98
 
99
99
 
100
100
 

6

追記

2018/10/26 01:14

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -178,14 +178,24 @@
178
178
 
179
179
  `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
180
180
 
181
+
182
+
181
183
  これによって表示された画像は、変換前から変化がありました。
182
184
 
183
- imarrの(PILで読み込んだ)データと比べると
185
+ ただ、imarrの(PILで読み込んだ正しい)データと比べると
184
186
 
185
187
  CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
186
188
 
189
+ (しかも見当違いに違う、e-43とは...)
190
+
187
191
  ```Python3
188
192
 
193
+ print(imarr[0][0])
194
+
195
+ #660
196
+
197
+
198
+
189
199
  print(CV_im_RGB[0][0])
190
200
 
191
201
  #6.32e-43
@@ -196,4 +206,4 @@
196
206
 
197
207
  どうやったら同じように扱えるのかわかりません。。。。
198
208
 
199
- tif画像処理むずし……
209
+ tif画像処理むずし...

5

追記

2018/10/26 00:38

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -80,11 +80,11 @@
80
80
 
81
81
  ```
82
82
 
83
+ ###追記(1),(2)あります
83
84
 
84
85
 
85
86
 
86
-
87
- ###追記
87
+ ###追記(1)
88
88
 
89
89
  Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
90
90
 
@@ -155,3 +155,45 @@
155
155
  IndexError: too many indices for array
156
156
 
157
157
  ```
158
+
159
+
160
+
161
+ ###追記(2)2018/10/26
162
+
163
+
164
+
165
+ > ------追記(1)より
166
+
167
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
168
+
169
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
170
+
171
+
172
+
173
+ これは
174
+
175
+ `CV_img_RGB = CV_im[:, ::-1].copy()`
176
+
177
+ に変えることで、正常に動くようになりました。
178
+
179
+ `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
180
+
181
+ これによって表示された画像は、変換前から変化がありました。
182
+
183
+ imarrの(PILで読み込んだ)データと比べると
184
+
185
+ CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
186
+
187
+ ```Python3
188
+
189
+ print(CV_im_RGB[0][0])
190
+
191
+ #6.32e-43
192
+
193
+ ```
194
+
195
+
196
+
197
+ どうやったら同じように扱えるのかわかりません。。。。
198
+
199
+ tif画像処理むずし……

4

追記

2018/10/26 00:35

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -86,6 +86,16 @@
86
86
 
87
87
  ###追記
88
88
 
89
+ Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
90
+
91
+ 調べて見ると
92
+
93
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
94
+
95
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
96
+
97
+ どこかおかしなところがありますでしょうか。
98
+
89
99
 
90
100
 
91
101
  ```python3
@@ -123,3 +133,25 @@
123
133
  plt.imshow(CV2PIL_normalize)
124
134
 
125
135
  ```
136
+
137
+ ```error
138
+
139
+ IndexError Traceback (most recent call last)
140
+
141
+ <ipython-input-108-5afa93a697bc> in <module>()
142
+
143
+ 8
144
+
145
+ 9 #BGRからRGBへ変換
146
+
147
+ ---> 10 CV_img_RGB = CV_im[:, :, ::-1].copy()
148
+
149
+ 11
150
+
151
+ 12 #変換
152
+
153
+
154
+
155
+ IndexError: too many indices for array
156
+
157
+ ```

3

追記

2018/10/24 01:02

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,47 @@
79
79
  #660
80
80
 
81
81
  ```
82
+
83
+
84
+
85
+
86
+
87
+ ###追記
88
+
89
+
90
+
91
+ ```python3
92
+
93
+ %matplotlib inline
94
+
95
+ import cv2
96
+
97
+ from PIL import Image
98
+
99
+ import numpy as np
100
+
101
+ from matplotlib import pyplot as plt
102
+
103
+
104
+
105
+ CV_im =cv2.imread('data.tiff',-1)
106
+
107
+
108
+
109
+ #BGRからRGBへ変換
110
+
111
+ CV_img_RGB = CV_im[:, :, ::-1].copy()
112
+
113
+
114
+
115
+ #変換
116
+
117
+ CV2PIL_normalize=Image.fromarray(CV_im_RGB)
118
+
119
+
120
+
121
+ #描画
122
+
123
+ plt.imshow(CV2PIL_normalize)
124
+
125
+ ```

2

コードの変更

2018/10/24 00:58

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -60,9 +60,7 @@
60
60
 
61
61
 
62
62
 
63
- path = "C:/Users/Uchiyama/Desktop/02_uchi_NiO_STO_015/02_uchi_NiO_STO_00015.tif"
64
-
65
- im = Image.open(path)
63
+ im = Image.open('data.tif')
66
64
 
67
65
  #im.show()
68
66
 

1

追記

2018/10/24 00:11

投稿

yamatail
yamatail

スコア77

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,19 @@
32
32
 
33
33
  plt.imshow(img)
34
34
 
35
+
36
+
37
+ #######データを確認##############
38
+
39
+ img[0][0]
40
+
41
+ #9.25e-43
42
+
35
43
  ```
44
+
45
+
46
+
47
+
36
48
 
37
49
 
38
50
 
@@ -60,4 +72,12 @@
60
72
 
61
73
  plt.imshow(imarr)
62
74
 
75
+
76
+
77
+ #######データを確認##############
78
+
79
+ imarr[0][0]
80
+
81
+ #660
82
+
63
83
  ```