質問編集履歴
1
ソースコードの添付
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,23 +8,107 @@
|
|
8
8
|
人の目で見た感じでは、見分けはつきません。
|
9
9
|
|
10
10
|
### 実現したいこと
|
11
|
+
・JPG画像をDICOM画像に変換した際、画質の変化など正常に変換できているか内積(RGB)を用いての確認
|
11
12
|
|
12
|
-
ここに実現したいことを箇条書きで書いてください。
|
13
|
-
pydicomでdicom画像を表示させたい
|
14
13
|
|
15
14
|
### 発生している問題・エラーメッセージ
|
16
|
-
|
15
|
+
・まったく同じJPG画像を使った内積の計算はできているのですが、JPGとDICOMを比べようとした際、DICOM画像の色が元のJPG画像と比べ画像表示するとき、ネオンカラーが強め?みたいな色に変化します。そのため、画像のRGBの配列も変化してしまい、比べることができません。
|
17
16
|
|
18
|
-
|
17
|
+
|
19
|
-
エラーメッセージはありません
|
18
|
+
・エラーメッセージはありません
|
20
19
|
|
21
20
|
### 該当のソースコード
|
22
21
|
|
23
22
|
```ここに言語名を入力
|
24
23
|
python
|
25
24
|
|
26
|
-
ソースコード
|
25
|
+
ソースコード1
|
26
|
+
import matplotlib.pyplot as plt #画像を表示するためのモジュール
|
27
|
+
import cv2 #OpenCVをインポート
|
28
|
+
import numpy as np #numpyをインポート
|
29
|
+
#import pydicom
|
30
|
+
|
31
|
+
img = cv2.imread("~~~.JPG") #画像の読み込み
|
32
|
+
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #色配置の変換 BGR→RGB
|
33
|
+
|
34
|
+
img2 = pydicom.read_file("~~~.dcm") #画像の読み込み
|
35
|
+
img2 = img2.pixel_array
|
36
|
+
#img2 = cv2.imread("~~~.JPG") #画像の読み込み #JPG同士で試しただけです
|
37
|
+
#img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB) #色配置の変換 BGR→RGB
|
38
|
+
|
39
|
+
img_array = np.array(img) #numpyで扱える配列をつくる
|
40
|
+
img2_array = np.array(img2) #numpyで扱える配列をつくる
|
41
|
+
|
42
|
+
print(img_array)
|
43
|
+
print(img2_array)
|
44
|
+
|
27
|
-
|
45
|
+
#JPEG
|
46
|
+
plt.imshow(img_array)
|
47
|
+
plt.show()
|
48
|
+
#JPEG解像度表示
|
49
|
+
filename = '~~~.JPG'
|
50
|
+
img = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
|
51
|
+
height, width = img.shape[:2]
|
52
|
+
print(f'Height: {height}, Width: {width}')
|
53
|
+
|
54
|
+
#JPEG2
|
55
|
+
plt.imshow(img2_array)
|
56
|
+
plt.show()
|
57
|
+
#JPEG解像度表示
|
58
|
+
filename = '~~~.JPG'
|
59
|
+
img2 = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
|
60
|
+
height, width = img2.shape[:2]
|
61
|
+
print(f'Height: {height}, Width: {width}')
|
62
|
+
|
63
|
+
#内積の計算
|
64
|
+
ans=[]
|
65
|
+
for x in range(height):
|
66
|
+
for y in range(width):
|
67
|
+
a = (int(img_array[x,y,0])*int(img2_array[x,y,0]))+(int(img_array[x,y,1])*int(img2_array[x,y,1]))+(int(img_array[x,y,2])*int(img2_array[x,y,2]))
|
68
|
+
|
69
|
+
b = (np.sqrt(((img_array[x,y,0]**2+img_array[x,y,1]**2+img_array[x,y,2]**2) * (img2_array[x,y,0]**2+img2_array[x,y,1]**2+img2_array[x,y,2]**2))))
|
70
|
+
|
71
|
+
c=a/b
|
72
|
+
|
73
|
+
#if (c in ans)==False:
|
74
|
+
ans.append(c)
|
75
|
+
ans_sum = sum(ans)
|
76
|
+
ans = ans_sum/(height*width)
|
77
|
+
print(ans) #1.0になれば内積1より、同じ画像としてみなせる
|
78
|
+
#-------------------------------------------------------------------------------------------------------------------
|
79
|
+
ソースコード2 #ここでは、DICOM画像を表示させようとしています。
|
80
|
+
import matplotlib.pyplot as plt #画像を表示するためのモジュール
|
81
|
+
%matplotlib inline
|
82
|
+
import cv2 #OpenCVをインポート
|
83
|
+
import numpy as np #numpyをインポート
|
84
|
+
import pydicom
|
85
|
+
|
86
|
+
img = cv2.imread("~~~.JPG") #画像の読み込み
|
87
|
+
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #色配置の変換 BGR→RGB
|
88
|
+
|
89
|
+
img2 = pydicom.dcmread("~~~.dcm") #画像の読み込み
|
90
|
+
img2 = img2.pixel_array
|
91
|
+
#img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB) #色配置の変換 BGR→RGB
|
92
|
+
|
93
|
+
|
94
|
+
img_array = np.array(img) #numpyで扱える配列をつくる
|
95
|
+
#img2_array = np.array(img2) #numpyで扱える配列をつくる
|
96
|
+
|
97
|
+
print(img_array)
|
98
|
+
print(img2)
|
99
|
+
|
100
|
+
#JPEG
|
101
|
+
plt.imshow(img_array)
|
102
|
+
plt.show()
|
103
|
+
#JPEG解像度表示
|
104
|
+
filename = 'IMG_0109.JPG'
|
105
|
+
img = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
|
106
|
+
height, width = img.shape[:2]
|
107
|
+
print(f'Height: {height}, Width: {width}')
|
108
|
+
|
109
|
+
plt.imshow(img2)
|
110
|
+
|
111
|
+
plt.show()
|
28
112
|
|
29
113
|
### 試したこと
|
30
114
|
|
@@ -32,5 +116,9 @@
|
|
32
116
|
|
33
117
|
### 補足情報(FW/ツールのバージョンなど)
|
34
118
|
|
119
|
+
実習中の課題についての質問につき、企業からいただいたものなので、JPG画像とDICOM画像の提供はできません。DICOM画像はJPG画像が変換されたものを使用しています。
|
35
|
-
|
120
|
+
よろしければ、回答者様のほうで、画像の調達・変換をよろしくお願いいたします。
|
36
121
|
|
122
|
+
ソースコード1とソースコード2は組み合わせられればと考えております。
|
123
|
+
未熟な学生なもので、かなりきたないコードですがよろしくお願いします。
|
124
|
+
|