MATLAB imshow for 3D彩色图像

时间:2016-04-27 14:35:38

标签: matlab image-processing

我有一个大小为[200x200x200]的医学成像矩阵。

为了显示它,我目前正在使用imshow3D功能,这是一个很好的工具,由Maysam Shahedi建造。 此工具逐片显示3D图像,基于鼠标的切片浏览

在我当前的项目中,我从原始输入图像为每个z层生成RGB图像。输出是尺寸为[200x200x200x3]的3D彩色图像(每层现在由3个通道表示)。

imshow3D功能在灰度图像上运行良好。是否可以用它来显示RGB图像?

1 个答案:

答案 0 :(得分:4)

我从Matlab FileExchange看了一下这个漂亮的imshow3D function,并且很容易改变它以允许使用一堆RGB图像。

该功能的神奇部分是

imshow(Img(:,:,S))

显示图片S的切片Img。我们只需将其更改为显示图片S的所有3个频道,方法是将其更改为Img(:,:,S,:)。结果将是 200×200×1×3 ,而MATLAB期望RGB图像的尺寸 200×200×3 。只需squeeze此图片即可获得正确的尺寸。这导致:

imshow(squeeze(Img(:,:,S,:))

为了显示RGB图像,请在函数imshow3D中执行搜索和替换,将所有Img(:,:,S)替换为squeeze(Img(:,:,S,:))并将其替换为std::string plain, getText, cipher, decrypted_data; cout << "Enter the plain text :\n";//getting the string from the user; getline(std::cin, plain); std::cout << "Plain Text: " << plain << std::endl;//printing the plain text std::cout << std::endl; CryptoPP::AutoSeededRandomPool rng; // Encryption & Decryption CryptoPP::InvertibleRSAFunction params; params.GenerateRandomWithKeySize(rng, 1536); CryptoPP::RSA::PrivateKey privateKey(params); CryptoPP::RSA::PublicKey publicKey(params); CryptoPP::RSAES_OAEP_SHA_Encryptor e(publicKey); CryptoPP::StringSource(plain, true, new CryptoPP::PK_EncryptorFilter(rng, e, new CryptoPP::StringSink(cipher))); cout << "Ciphertext: " << cipher << endl; std::ofstream out("output.text");//writing to a file out << cipher; out.close(); cout << endl; std::ifstream readfile("output.text");//reading from the file if (readfile.is_open()) { while (getline(readfile, getText)) { std::cout << getText << '\n'; } } readfile.close(); CryptoPP::RSAES_OAEP_SHA_Decryptor d(privateKey); CryptoPP::StringSource(getText, true, new CryptoPP::PK_DecryptorFilter(rng, d, new CryptoPP::StringSink(decrypted_data))); std::cout << "Decrypted Text: " << decrypted_data << std::endl;//printing the decrypted file 作品!

result