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

質問編集履歴

15

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -39,7 +39,7 @@
39
39
  imarr[0][0]
40
40
  #660
41
41
  ```
42
- ###追記(1),(2),(3),(3.1)あります
42
+ ###追記(1),(2),(3),(3.1),(4)あります
43
43
 
44
44
  ###追記(1)
45
45
  Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。

14

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -127,4 +127,12 @@
127
127
  `img * 660/9.25e-43`
128
128
 
129
129
  すると、PILのと同じ値に変換できた。
130
- どうやら定数が掛けているよう。
130
+ どうやら定数が掛けているよう。
131
+
132
+ ###追記(4)2018/10/19
133
+ そもそもtifファイルがtifに準拠したフォーマットになっているか確認する。
134
+ tifをバイナリエディタで開き中にあるタグの情報を確認する。
135
+ その後フリーのtif解析ソフトを使って確認してみる。(自信なかったので...)
136
+
137
+ 以下、その結果を貼ります。
138
+ ![イメージ説明](3505b99a1c678734c55dc196886c68a7.png)

13

追記

2018/10/29 01:57

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -39,7 +39,7 @@
39
39
  imarr[0][0]
40
40
  #660
41
41
  ```
42
- ###追記(1),(2)あります
42
+ ###追記(1),(2),(3),(3.1)あります
43
43
 
44
44
  ###追記(1)
45
45
  Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。

12

追記

2018/10/26 05:57

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,5 @@
1
1
  pythonの画像処理libのopencvとPILを試しに使っています。
2
2
 
3
-
4
- > ・追記(3)2018/10/26
5
- 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。カウント数の範囲は、-2から177880です。
6
-
7
-
8
-
9
3
  しかし、表示される画像は同じなのに、
10
4
  2つのデータが違う値で出てくるのです。
11
5
 
@@ -107,6 +101,17 @@
107
101
  #6.32e-43
108
102
  ```
109
103
 
104
+ ###追記(3)2018/10/26
105
+ 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。カウント数の範囲は、-2から177880です。
106
+ ですので、opencvもPILも配列に変換した後は高さ×幅の2次元になります。
107
+
108
+ RGBのように3つあるわけではないので、opencvやPILを使うべきデータではないということなのでしょうか。そもそも一般的なtifファイルではない(グレースケールの場合0~255)ので取扱いも違うのでしょうか。
109
+
110
+ 最終的に作りたいプログラムは、カウント数の範囲(-2から177880)のデータを画像として表示させる為に(グレースケールの場合)256に分割して表示したいということです。
111
+ その為、minmumとmaximumを調整するプログラムを作りたいと思いました。
112
+
113
+ minmumは最小値で固定して、maximumを200000にしたり100000にしたりと変更させ、それを256で区別して、表示させる。という感じです。
114
+
110
115
  ###追記(3.1)2018/10/26
111
116
  上の追記(3)でも書いたように元データのtifが1色(カウント数)相当だったため、
112
117
  質問当初に書いたように読み込みを行った場合を考えた。

11

追記

2018/10/26 05:56

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  > ・追記(3)2018/10/26
5
- 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。
5
+ 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。カウント数の範囲は、-2から177880です。
6
6
 
7
7
 
8
8
 
@@ -118,7 +118,7 @@
118
118
 
119
119
  そこでopencvのデータに(img[0][0]のデータが660になる)
120
120
  660(`imarr[0][0]`)/9.25e-43(`img[0][0]`)
121
- を全けてみた。
121
+ を全配列けてみた。
122
122
  `img * 660/9.25e-43`
123
123
 
124
124
  すると、PILのと同じ値に変換できた。

10

追記

2018/10/26 05:30

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -107,5 +107,19 @@
107
107
  #6.32e-43
108
108
  ```
109
109
 
110
+ ###追記(3.1)2018/10/26
111
+ 上の追記(3)でも書いたように元データのtifが1色(カウント数)相当だったため、
110
- どうやっら同じようにるのかわかりません。。。
112
+ 質問当初に書いたように読み込みを行った場合を考
113
+ ・PILの場合
114
+ `imarr[0][0]` = 660 あってる
115
+
116
+ ・opencvの場合
117
+ `img[0][0]` = 9.25e-43 良くわからない
118
+
119
+ そこでopencvのデータに(img[0][0]のデータが660になる)
120
+ 660(`imarr[0][0]`)/9.25e-43(`img[0][0]`)
121
+ を全部にかけてみた。
122
+ `img * 660/9.25e-43`
123
+
124
+ すると、PILのと同じ値に変換できた。
111
- tif画像処理むずし...
125
+ どうやら定数が掛けているよう。

9

追記

2018/10/26 02:34

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,11 @@
1
1
  pythonの画像処理libのopencvとPILを試しに使っています。
2
2
 
3
+
4
+ > ・追記(3)2018/10/26
5
+ 取り扱うtifデータは1ピクセルにカウント数の入ったデータなのでグレースケール相当のものです。
6
+
7
+
8
+
3
9
  しかし、表示される画像は同じなのに、
4
10
  2つのデータが違う値で出てくるのです。
5
11
 

8

追記

2018/10/26 02:15

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -92,7 +92,7 @@
92
92
  これによって表示された画像は、変換前から変化がありました。
93
93
  ただ、imarrの(PILで読み込んだ正しい)データと比べると
94
94
  CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
95
- (しかも見当違いに違う、e-43とは...)
95
+ (しかも見当違いに違う、e-43も違うとは...)
96
96
  ```Python3
97
97
  print(imarr[0][0])
98
98
  #660

7

追記

2018/10/26 01:15

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,7 @@
46
46
  調べて見ると
47
47
  `CV_img_RGB = CV_im[:, :, ::-1].copy()`
48
48
  を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
49
- どこかおかしなところがありますでしょうか。
49
+ どこかおかしなところがありますでしょうか。(追記(2)で一応対処済み)
50
50
 
51
51
  ```python3
52
52
  %matplotlib inline

6

追記

2018/10/26 01:14

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -88,13 +88,18 @@
88
88
  `CV_img_RGB = CV_im[:, ::-1].copy()`
89
89
  に変えることで、正常に動くようになりました。
90
90
  `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
91
+
91
92
  これによって表示された画像は、変換前から変化がありました。
92
- imarrの(PILで読み込んだ)データと比べると
93
+ ただ、imarrの(PILで読み込んだ正しい)データと比べると
93
94
  CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
95
+ (しかも見当違いに違う、e-43とは...)
94
96
  ```Python3
97
+ print(imarr[0][0])
98
+ #660
99
+
95
100
  print(CV_im_RGB[0][0])
96
101
  #6.32e-43
97
102
  ```
98
103
 
99
104
  どうやったら同じように扱えるのかわかりません。。。。
100
- tif画像処理むずし……
105
+ tif画像処理むずし...

5

追記

2018/10/26 00:38

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -39,9 +39,9 @@
39
39
  imarr[0][0]
40
40
  #660
41
41
  ```
42
+ ###追記(1),(2)あります
42
43
 
43
-
44
- ###追記
44
+ ###追記(1)
45
45
  Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
46
46
  調べて見ると
47
47
  `CV_img_RGB = CV_im[:, :, ::-1].copy()`
@@ -76,4 +76,25 @@
76
76
  12 #変換
77
77
 
78
78
  IndexError: too many indices for array
79
- ```
79
+ ```
80
+
81
+ ###追記(2)2018/10/26
82
+
83
+ > ------追記(1)より
84
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
85
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
86
+
87
+ これは
88
+ `CV_img_RGB = CV_im[:, ::-1].copy()`
89
+ に変えることで、正常に動くようになりました。
90
+ `[:, :, ::-1]`この中の次元をCV_imと合わせる必要があったようです。
91
+ これによって表示された画像は、変換前から変化がありました。
92
+ imarrの(PILで読み込んだ)データと比べると
93
+ CV_img_RGBの(openCVで読み込んでRGB変換した)データは違う。
94
+ ```Python3
95
+ print(CV_im_RGB[0][0])
96
+ #6.32e-43
97
+ ```
98
+
99
+ どうやったら同じように扱えるのかわかりません。。。。
100
+ tif画像処理むずし……

4

追記

2018/10/26 00:35

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -42,6 +42,11 @@
42
42
 
43
43
 
44
44
  ###追記
45
+ Yhaya様のアドバイスを受けてopencvで読み込んでRGBに変換した後、描写することを試みました。
46
+ 調べて見ると
47
+ `CV_img_RGB = CV_im[:, :, ::-1].copy()`
48
+ を挿入し、RGBにするとのことでしたが、エラーが出てしましました。
49
+ どこかおかしなところがありますでしょうか。
45
50
 
46
51
  ```python3
47
52
  %matplotlib inline
@@ -60,4 +65,15 @@
60
65
 
61
66
  #描画
62
67
  plt.imshow(CV2PIL_normalize)
68
+ ```
69
+ ```error
70
+ IndexError Traceback (most recent call last)
71
+ <ipython-input-108-5afa93a697bc> in <module>()
72
+ 8
73
+ 9 #BGRからRGBへ変換
74
+ ---> 10 CV_img_RGB = CV_im[:, :, ::-1].copy()
75
+ 11
76
+ 12 #変換
77
+
78
+ IndexError: too many indices for array
63
79
  ```

3

追記

2018/10/24 01:02

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,26 @@
38
38
  #######データを確認##############
39
39
  imarr[0][0]
40
40
  #660
41
+ ```
42
+
43
+
44
+ ###追記
45
+
46
+ ```python3
47
+ %matplotlib inline
48
+ import cv2
49
+ from PIL import Image
50
+ import numpy as np
51
+ from matplotlib import pyplot as plt
52
+
53
+ CV_im =cv2.imread('data.tiff',-1)
54
+
55
+ #BGRからRGBへ変換
56
+ CV_img_RGB = CV_im[:, :, ::-1].copy()
57
+
58
+ #変換
59
+ CV2PIL_normalize=Image.fromarray(CV_im_RGB)
60
+
61
+ #描画
62
+ plt.imshow(CV2PIL_normalize)
41
63
  ```

2

コードの変更

2018/10/24 00:58

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -29,8 +29,7 @@
29
29
  from PIL import Image
30
30
  %matplotlib inline
31
31
 
32
- path = "C:/Users/Uchiyama/Desktop/02_uchi_NiO_STO_015/02_uchi_NiO_STO_00015.tif"
33
- im = Image.open(path)
32
+ im = Image.open('data.tif')
34
33
  #im.show()
35
34
  imarr = np.array(im)
36
35
 

1

追記

2018/10/24 00:11

投稿

yamatail
yamatail

スコア77

title CHANGED
File without changes
body CHANGED
@@ -15,8 +15,14 @@
15
15
  img = cv2.imread('data.tif',-1)
16
16
 
17
17
  plt.imshow(img)
18
+
19
+ #######データを確認##############
20
+ img[0][0]
21
+ #9.25e-43
18
22
  ```
19
23
 
24
+
25
+
20
26
  ```python3
21
27
  import matplotlib.pyplot as plt
22
28
  import numpy as np
@@ -29,4 +35,8 @@
29
35
  imarr = np.array(im)
30
36
 
31
37
  plt.imshow(imarr)
38
+
39
+ #######データを確認##############
40
+ imarr[0][0]
41
+ #660
32
42
  ```