📄 colordrawout.m
字号:
%%%用matlab编程实现彩色图像的局部分割
function A=colordrawout(pix,n) %彩色图片轮廓线提取函数
figure;A=imread(pix,fmt); %读取指定彩色图片
[k,j]=size(A(:,:,1)); % k,j分别为2D矩阵的行数和列数
e=['红色强度值矩阵';'绿色强度值矩阵';'蓝色强度值矩阵'];
nn=n*ones(k,j); %阈值矩阵
for i=1:3 %依次从三个矩阵中提取轮廓线
H=double(A(:,:,i)); %将选择的矩阵变为双精度矩阵
F=40*sin(pi/2*1/255*H); %进行非线性变换
you=F(:,2:end); you(:,end+1)=0; %右矩阵
xia=F(2:end,:);xia(end+1,:)=0; %左矩阵
yx=F(2:end,2:end);yx(end+1,end+1)=0; %右下矩阵
%判断图片中任一点以其周围的点的差与给出的阈值的关系
yy=abs(F-you)-nn;yy(find(yy>0))=255;yy(find(yy<=0))=0;
xx=abs(F-xia)-nn;xx(find(xx>0))=255;yy(find(xx<=0))=0;
yx2=abs(F-yx)-nn;yx2(find(yx2>0))=255;yx2(find(yx2<=0))=0;
T=xx+yy+yx2;%满足其中一个就为边界
subplot(3,3,i+6); %将窗口分割为两行两列,下图显示于第i+1位置
%显示轮廓线 %图释 %保持图片显示比例
imshow(T); title(e(i,:)); axis image;
end;
subplot(3,3,2); %下图显示于第1位置
image(A); %显示原彩色图片
title('彩色图原图'); axis image; %图释%保持图片显示比例
r=A;g=A;b=A;r(:,:,2)=0;r(:,:,3)=0;g(:,:,1)=0;g(:,:,3)=0;b(:,:,1)=0;b(:,:,2)=0;
subplot(3,3,4);image(r);axis image; subplot(3,3,5);
image(g);axis image;subplot(3,3,6); image(b);axis image;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -