我如何得到这个代码给我RGB结果?

2次查看(最近30天)
Diptayan Dasgupta
Diptayan Dasgupta 2021年5月16日
评论道: 图像分析 2021年5月16日
这是我写的图像全息图代码。但我想让结果是RGB的。它是黑白的。如何改变它?这是我的形象。
清晰的所有,关闭所有
2 = imread (“BMB2.jpg”);% 256*256像素8位
图;imshow (Ii);
标题(“对象模式”
Ii0 =双(2);
rgb = 1:3;
2 = Ii0 (:,:, rgb);
PH =兰德([256256]);
2 = Ii。* exp(2 *π* PH值);在对象上添加一个随机相位
M = 512;
我= 0 (512);
我(128:383,128:383)= 2;%补零
z = 15;%(厘米,距离)请更改距离为1,5,15,等
w = 6500 * 10 ^ 8;%(厘米,波长)
δ= 0.005;%厘米,像素大小50um
r = 1: M;
c = 1: M;
[C R] = meshgrid (C, R);
%正向传播(650nm)
p = exp(2我*π* z。* ((1 / w) ^ 2 - (1 / M /δ)^ 2 *(决定物价/ 2 - 1)。^ 2 - (1 / M /δ)^ 2 *(- / 2 - 1)。^ 2)。^ 0.5);
A0 = fftshift (ifft2 (fftshift(我)));
阿兹= A0。* p;
E = fftshift (fft2 (fftshift (Az)));%全息图的一级
%重建(650海里)
p = exp(2我*π* (- z)。* ((1 / w) ^ 2 - (1 / M /δ)^ 2 *(决定物价/ 2 - 1)。^ 2 - (1 / M /δ)^ 2 *(- / 2 - 1)。^ 2)。^ 0.5);
A1 = fftshift (ifft2 (fftshift (E)));
Az1 = A1。* p;
R1 = fftshift (fft2 (fftshift (Az1)));
R1 = (abs (R1)) ^ 2;
图;imshow (R1 / max (max (R1)));
标题(“重建图像(650海里)”
%重建(450 nm ~ 650 nm)
dw = 50;
IMA = 0 (512512);
g =今日;
w2 = (20000 - dw * g) * 10 ^ 8;%重建波长
E2 = e * exp(我*π*信德(10)* (w-w2) / w / w2。* R *δ);
%由于波长偏移导致的相位失配
p = exp(2我*π* (- z)。* ((1 / w2) ^ 2 - (1 / M /δ)^ 2 *(决定物价/ 2 - 1)。^ 2 - (1 / M /δ)^ 2 *(- / 2 - 1)。^ 2)。^ 0.5);
Az2 = ifft2 (fftshift (E2)) * (fftshift (p));
R2 = fftshift (fft2 (Az2));
R = (abs (R2)) ^ 2;所有波长的总和
IMA = IMA + R2;
结束
IMA = IMA / max (max (IMA));
图;imshow (IMA)
标题(“重建图像(白光)”
结束

接受的答案

图像分析
图像分析 2021年5月16日
你的循环rgb提取和操作一个颜色通道一次,所以当然是灰度。它轮流处理每个颜色通道,一次一个。任何特定的颜色通道(R, G,或B)都是单色(灰度)。
4评论
图像分析
图像分析 2021年5月16日
IMAC需要是一个浮点数,0-1范围内的真实图像,或者0-255范围内的uint8图像。
IMAC = rescale(real(IMAC), 0,1));使它翻倍
IMAC = uint8(255 * rescale(IMAC, 0, 255));%改为uint8

登录评论。

更多的答案(0)

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!