早教吧 育儿知识 作业答案 考试题库 百科 知识分享

matlab 图像矩阵条件提取方法用matlab如何实现: 已知一个图像矩阵A和某一点的颜色(R0,G0,B0) 怎样把A中 R,G,B分量均在R0,G0,B0的 0.80~1.20倍之间的像素提取到矩阵B中?

题目详情
matlab 图像矩阵条件提取方法
用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);                      %显示处理后的图像

图像位处理前与处理后的图片.