前提・実現したいこと
ヒストグラム平坦化の記事参照
to_rgbの画像をヒストグラム平坦化を行いたいのですが、エラーがでまして、前に進めません。
versionとかがおかしいのかと、簡単な画像をやってみましたら、うまくいきました。
ですので、この写真になにか問題があるのかなと思いました。
ですが、shapeなどを確認しても、標準化したってことしかわかりません。
よろしくおねがいします。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- error Traceback (most recent call last) /tmp/ipykernel_42/3202283151.py in <module> 8 9 # #画像をRGBからグレースケールに変更 ---> 10 gray_img = cv2.cvtColor(to_rgb, cv2.COLOR_RGB2GRAY) 11 # cv2.COLOR_BGR2GRAY 12 error: OpenCV(4.5.3) /tmp/pip-req-build-fvfwe_ss/opencv/modules/imgproc/src/color.simd_helpers.hpp:94: error: (-2:Unspecified error) in function 'cv::impl::{anonymous}::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::impl::{anonymous}::Set<3, 4>; VDcn = cv::impl::{anonymous}::Set<1>; VDepth = cv::impl::{anonymous}::Set<0, 2, 5>; cv::impl::{anonymous}::SizePolicy sizePolicy = cv::impl::<unnamed>::NONE; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]' > Unsupported depth of input image: > 'VDepth::contains(depth)' > where > 'depth' is 6 (CV_64F)
コードはあまりみないのでなれないと思います。ですので、簡単にまとめます。
dicom形式のmri画像をflairモダリティをt1,t2から作成しています。
つまり、画像が3つ重なっていて、それをresampleしてるってことです。
shapeがあっていればいいのではないのですか?
よくわかりかねます。そのあたりが、グレイスケールに変更しているのにも関わらずです.
reader = sitk.ImageSeriesReader() reader.LoadPrivateTagsOn() def resample(image, ref_image): resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(ref_image) resampler.SetInterpolator(sitk.sitkLinear) resampler.SetTransform(sitk.AffineTransform(image.GetDimension())) resampler.SetOutputSpacing(ref_image.GetSpacing()) resampler.SetSize(ref_image.GetSize()) resampler.SetOutputDirection(ref_image.GetDirection()) resampler.SetOutputOrigin(ref_image.GetOrigin()) resampler.SetDefaultPixelValue(image.GetPixelIDValue()) resamped_image = resampler.Execute(image) return resamped_image %%time # filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/{train_dirs[2]}/T1w') filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/00524/T1w') reader.SetFileNames(filenamesDICOM) t1_sitk = reader.Execute() filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/00524/FLAIR') # filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/{train_dirs[2]}/FLAIR') reader.SetFileNames(filenamesDICOM) flair_sitk = reader.Execute() # filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/{train_dirs[2]}/T2w') filenamesDICOM = reader.GetGDCMSeriesFileNames(f'{train_path}/00524/T2w') reader.SetFileNames(filenamesDICOM) t2_sitk = reader.Execute() flair_resampled = resample(flair_sitk, t1_sitk) t2_resampled = resample(t2_sitk, t1_sitk) t1_sitk_array = normalize(sitk.GetArrayFromImage(t1_sitk)) flair_resampled_array = normalize(sitk.GetArrayFromImage(flair_resampled)) t2_resampled_array = normalize(sitk.GetArrayFromImage(t2_resampled)) stacked = np.stack([t1_sitk_array, t2_resampled_array, flair_resampled_array,]) to_rgb = stacked[:,t1_sitk_array.shape[0]//2,:,:].transpose(1,2,0) im = Image.fromarray((to_rgb * 255).astype(np.uint8))
該当のソースコード
import cv2 import numpy as np # #画像をRGBからグレースケールに変更 gray_img = cv2.cvtColor(to_rgb, cv2.COLOR_RGB2GRAY) # cv2.COLOR_BGR2GRAY #ヒストグラム平坦化 # hist_img = cv2.equalizeHist(gray_img) hist_img = cv2.equalizeHist(gray_img) #処理後の画像を保存 # cv2.imwrite('x-ray_hist.png', hist_img) plt.imshow(hist_img)
試したこと
1,shape確認
2,version確認(簡単な画像検証)
3,エラーをコピペしましても該当加所なし
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
Python3 (3.7.4)
Jupyter Lab version 1.1.4
macbookpro 16
でーたの追加
こちらのtrainのなかにあります。
回答1件
あなたの回答
tips
プレビュー