質問編集履歴

1

ソースコードの添付

2023/01/23 07:19

投稿

okstu
okstu

スコア0

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
- pydicomでの
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
+