用matlab如何实现:
已知一个图像矩阵A和某一点的颜色(R0,G0,B0) 怎样把A中 R,G,B分量均在R0,G0,B0的 0.80~1.20倍之间的像素提取到矩阵B中?
在处理矩阵A时要先确保A已转为double型。显示B时还要转换为uint8型。我举一个例子吧,我先读取一个名为111.bmp的图像
I=imread('C:\Users\DELL\Desktop\111.bmp');
A=double(I); %转为double型
R0=2; %比方说已知的R0,G0,B0分别为2,59,182。
G0=59;
B0=182;
[M,N,H]=size(A); %获取A的大小。
B=zeros(M,N,H); %新建一个同样大小零矩阵B。
for n=1:N
for m=1:M
r=A(m,n,1); %将此像素的R分量赋给r。
g=A(m,n,2); %将此像素的G分量赋给g。
b=A(m,n,3); %将此像素的B分量赋给b。
if (r>=0.8*R0&&r<=1.2*R0)&&(g>=0.8*G0&&g<=1.2*G0)&&(b>=0.8*B0&&b<=1.2*B0)
B(m,n,1)=A(m,n,1); %判断完之后将A中此像素的各分量赋给B。
B(m,n,2)=A(m,n,2);
B(m,n,3)=A(m,n,3);
end;
end;
end;
NI=uint8(B); %将B转为uint8型,并赋给NI。
imshow(I); %显示原图像
imshow(NI); %显示处理后的图像
图像位处理前与处理后的图片。