- 积分
- 0
- 注册时间
- 2005-10-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2005-10-28 10:24:26
|
显示全部楼层
来自 清华大学紫荆公寓
Re:请问有人用过MATLAB进行图像处理吗
谢谢,我再查查看。希望能多找集中方法。
以下是我通过选定目标图像的RGB范围进行分割的程序。算是与大家交流吧。欢迎大家提出意见。不胜感激!
clear,clc;
i=imread('15_37_55.bmp');%读入照片14_3_55
rect =[250 65 109 150];%取定一个范围
subplot(121);imshow(i);title('origina');%显示原来的照片
a2=imcrop(i,rect);%按照范围截取图片
a3=imcrop(a2);
a31=a3(:,:,1);%取R
r1=size(a31,1);
c1=size(a31,2);
a31=reshape(a31,r1*c1,1);
a31mean=mean(a31),%求平均值
a31std=std(double(a31)),%求方差
a32=a3(:,:,2);%取G
r2=size(a32,1);
c2=size(a32,2);
a32=reshape(a32,r1*c1,1);
a32mean=mean(a32),%求平均值
a32std=std(double(a32)),%求方差
a33=a3(:,:,3);%取G
r3=size(a33,1);
c3=size(a33,2);
a33=reshape(a33,r1*c1,1);
a33mean=mean(a33),%求平均值
a33std=std(double(a33)),%求方差
%subplot(122);imshow(a2);title('cut');%截取图像的一部分
%a2(50,50,2)
for i=1:(rect(4)+1)
for j=1:(rect(3)+1)
if a2(i,j,1)>(a31mean-3*a31std)&a2(i,j,1)<(a31mean+3*a31std)&a2(i,j,2)>(a32mean-3*a32std)&a2(i,j,2)<(a32mean+3*a32std)&a2(i,j,3)>(a33mean-3*a33std)&(a2(i,j,3)<a33mean+3*a33std)
a2(i,j,1)=0;%目标图像部分令其为黑色
a2(i,j,2)=0;
a2(i,j,3)=0;
else
a2(i,j,1)=255;%其他部分为白色
a2(i,j,2)=255;
a2(i,j,3)=255;
end
end
end
figure,imshow(a2);
a2=RGB2GRAY(a2);
title('色素分割的图像');
i_filter3=medfilt2(a2,[7 7]);%中值滤波,滤去噪音点
figure,imshow(i_filter3);title('窗口大小为7×7');%窗口大小为
bw1=edge(i_filter3,'canny',0.2);%提取边缘
figure,imshow(bw1);%显示边缘 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|