下面是扩展一副彩色图像为原图像的4倍,灰度的很容易实现,直接换彩色的就不行,左上角是三幅同原图像大小相同的灰度图像,本该是一副和原图像相同的彩色图像。后来分解RGB,单幅图像扩展后在合成彩色的,单幅没问题,合成的左上角显示纯白,大家帮忙分析下啥原因。
A=imread('LenaRGB.bmp');%读入原始图像
subplot(3,3,1);
imshow(A):title('原始图像');%子窗口显示原始图像
R=A(:,:,1);
G=A(:,:,2);
B=A(:,:,3);%RGB分解
subplot(3,3,2);
imshow(R):title('R分量');
subplot(3,3,3);
imshow(G):title('G分量');
subplot(3,3,4);
imshow(B):title('B分量');
S(:,:,1)=R;
S(:,:,2)=G;
S(:,:,3)=B;
subplot(3,3,5);
imshow(S);title('合成后图像');
%--------扩展R为原始图像的4倍,M*N部分和原始图像相同,其他填充0--------%
[M,N]=size(R);%计算图像大小
K=double(R);
Q=2*M;
P=2*N;
for i=1:Q
for j=1:P
if(i<=M)&&(j<=N)
C(i,j)=K(i,j);
else
C(i,j)=0;
end
end
end
subplot(3,3,6);
C=uint8(C);
imshow(C,[]):title('R扩展后图像');
%--------扩展G为原始图像的4倍,M1*N1部分和原始图像相同,其他填充0--------%
[M1,N1]=size(G);%计算图像大小
L=double(G);
Q1=2*M1;
P1=2*N1;
for i=1:Q1
for j=1:P1
if(i<=M1)&&(j<=N1)
D(i,j)=L(i,j);
else
D(i,j)=0;
end
end
end
subplot(3,3,7);
D=uint8(D);
imshow(D,[]):title('G扩展后图像');
%--------扩展B为原始图像的4倍,M2*N2部分和原始图像相同,其他填充0--------%
[M2,N2]=size(B);%计算图像大小
T=double(B);
Q2=2*M2;
P2=2*N2;
for i=1:Q2
for j=1:P2
if(i<=M2)&&(j<=N2)
E(i,j)=T(i,j);
else
E(i,j)=0;
end
end
end
subplot(3,3,8);
E=uint8(E);
imshow(E,[]):title('B扩展后图像');
F(:,:,1)=C;
F(:,:,2)=D;
F(:,:,3)=E;
subplot(3,3,9);
imshow(F,[]);title('扩展后合成图像')
[本帖最后由 mooni 于 2009-3-28 14:26 编辑]
expansionRGB2.jpg
(31.56 KB, 下载次数: 0)
2009-3-28 13:11 上传
运行结果图