.dcmイメージをdcmtkフォーマットからopencvに変換する際に問題があります。 マイコード:dicomイメージをopencvに正しく変換する方法
DicomImage dcmImage(in_file.c_str());
int depth = dcmImage.getDepth();
std::cout << "bit-depth: " << depth << "\n"; //this outputs 10
Uint8* imgData = (uchar*)dcmImage.getOutputData(depth);
std::cout << "size: " << dcmImage.getOutputDataSize() << "\n"; //this outputs 226100
cv::Mat image(int(dcmImage.getWidth()), int(dcmImage.getHeight()), CV_32S, imgData);
std::cout << dcmImage.getWidth() << " " << dcmImage.getHeight() << "\n"; //this outputs 266 and 425
imshow("image view", image); //this shows malformed image
だから私はCV_32S
とgetOutputData
パラメータについて確認していません。私はそこに何を置くべきですか?また、226100 /(266 * 425)== 2で、2バイト前のピクセル(?)でなければなりません。
あなたの答えをありがとう!私はそれを少し試してみましたが、結果はありませんでした。私はおそらく何かを得ることはありません。私のコード:https://pastebin.com/NGsUn3tN 理由はわかりませんが、表現は0または1(unsined/signed)でなければなりません。また、マスクとして(1 << 11)-1を置くことが正しい選択であるかどうかもわかりません。 Btw:それを行う一般的な方法はありますか?異なる表現/深さの画像が存在する可能性があります。 – user7428910
もう1つ質問:DICOMイメージのピクセル表現をdcmImage.getInterData() - > getRepresentation()として正しく抽出していますか? – user7428910
それに応じて私の答えを更新しました –