基于MATLAB的图像处理算法综合应用算法开发.docx
《基于MATLAB的图像处理算法综合应用算法开发.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像处理算法综合应用算法开发.docx(17页珍藏版)》请在冰豆网上搜索。
基于MATLAB的图像处理算法综合应用算法开发
基于MATLAB的图像处理算法综合应用算法开发
(一)实验类型:
研究
(二)实验目的:
1、培养应用MATLAB开发图像处理算法的能力。
2、掌握开发综合性图像算法的技能与方法。
(三)实验内容:
弹孔中心位置的图像处理方法。
(四)实验要求:
开发出算法及程序代码,并获得处理结果。
其基本原理是,先对图像进行边缘检测,后应用数学形态学的方法将边缘连接在一起,后填充,应用数学形态学方法对分割弹孔圆形化,再进行边缘检测获得弹孔边缘,最后应用最小二乘法拟合圆心的方法,获得弹孔中心。
实验过程:
打开MATLAB软件,在OPEN中选择我们在软件中设计好的算法程序。
clear;
closeall;
I0=imread('pic.jpg');
%I0=rgb2gray(I3);
[x,y,z]=size(I0);
%I6=im2bw(I3,0.4);
I4=edge(I0,'canny',0.1);
BW=strel('disk',1);
BW2=strel('disk',1);
I5=imdilate(I4,BW);
I6=imfill(I5,'holes');
I7=imdilate(I6,BW2);
BW3=strel('disk',3);
I8=imerode(I7,BW3);
I81=imfill(I8,'holes');
BW4=strel('disk',7);
I9=imerode(I81,BW4);
BW5=strel('disk',7);
I10=imopen(I9,BW5);
figure
(1),imshow(I0);
figure
(2),imshow(I4);
figure(3),imshow(I5);
figure(4),imshow(I6);
figure(5),imshow(I7);
figure(6),imshow(I8);
figure(7),imshow(I9);
figure(8),imshow(I10);
holdon;
boundaries=bwboundaries(I5);
[mun1,mun2]=size(boundaries);
fork=1:
mun1
b=boundaries{k};
plot(b(:
2),b(:
1),'g','LineWidth',3);
holdon;
bt1=b(:
1);
bt2=b(:
2);
[cir_x,cir_y,radis]=circlefitting(bt1,bt2);
plot(cir_y,cir_x,'r*','LineWidth',3);
end
然后选择run。
软件则会根据我们编辑好的算法对目标图片进行弹孔轮廓提取,显示出计算好的图片如下:
基于MATLAB的图像处理算法综合应用算法开发
(一)实验类型:
研究
(二)实验目的:
1、培养应用MATLAB开发图像处理算法的能力。
2、掌握开发综合性图像算法的技能与方法。
(三)实验内容:
色彩目标提取图像处理应用实例。
(四)实验要求:
开发出算法及程序代码,并获得处理结果。
应用理论:
色彩变换
色彩变换原理,减色合成法:
人眼看到物体的颜色是由于物体反射了物体颜色相同的光。
光白光(三原色的混合体)照到物体上时,物体只把它自己的颜色对应的光线反射出来,其它的色光被吸收,即从白光中“减”去物体没有的颜色。
这种情况叫减色合成。
品红会吸收绿色,反射红色光和蓝色光。
黄色会吸收白光中的蓝色,反射红色光和绿色光。
青色会吸收白光中的红色,反射绿色和蓝色。
(色度在
附近时为红色,
附近为绿色,
附近为兰色)
将原图c3.jpg进行如下编辑程序进行运算我们可得到色彩变换结果
程序如下:
clear;%清除工作区内所有的变量
closeall;%关闭所有的figure
%globalijyc1c2sathue;
Iinp=imread('fig89.bmp');
[ysize,xsize,zsize]=size(Iinp);
m_inty=0.5;
m_hue=200;
m_sat=1;
forj=1:
ysize
fori=1:
xsize
image_r(j,i)=Iinp(j,i,1);
image_g(j,i)=Iinp(j,i,2);
image_b(j,i)=Iinp(j,i,3);
y(j,i)=double(0.0);
c1(j,i)=double(0.0);
c2(j,i)=double(0.0);
sat(j,i)=double(0.0);
hue(j,i)=double(0.0);
end
end
%由RGB变成色差信号
[y,c1,c2]=Rgb_to_yc(image_r,image_g,image_b,xsize,ysize);
%由色差信号计算饱和度和色相
[sat,hue]=C_to_SH(c1,c2,xsize,ysize);
%亮度 饱合度 色调的调整
[out_y,out_sat,out_hue]=Change_YSH(y,sat,hue,m_inty,m_sat,m_hue,xsize,ysize);
%由色调和饱合度计算色差信号
[m_c1,m_c2]=SH_to_C(out_sat,out_hue,xsize,ysize);
%由亮度 色差变换RGB信号
[out_r,out_g,out_b]=Yc_to_rgb(out_y,m_c1,m_c2,xsize,ysize);
forj=1:
ysize
fori=1:
xsize
Iout(j,i,1)=out_r(j,i);
Iout(j,i,2)=out_g(j,i);
Iout(j,i,3)=out_b(j,i);
end
end
figure
(1),imshow(Iinp);
figure
(2),imshow(image_r);
figure(3),imshow(image_g);
figure(4),imshow(image_b);
figure(5),imshow(Iout);
运行程序后得到如下图片:
实验结果分析:
基于YUV彩色系统的灰度图像着色方法--用彩色参考图着色
假定相邻的像素之间如果有相似的Y值,那么就会有相似的U和V值;视觉上对U、V变化的不敏感性,同时假定同类色中颜色的区别主要是Y值作用的结果。
基本原则:
1)彩色图像中U、V值显著改变的临界线,也是Y值显著改变的临界线;
2)同类色中相近颜色的区别在视觉上主要是Y值作用的结果
实例2、彩色目标提取,(原理与色彩变换相同,应用图像像素的点的色度进行判别,色度在
附近时为红色,
附近为兰色,
附近为绿色)
我们根据变换远离编辑出如下程序:
clear;%清除工作区内所有的变量
closeall;%关闭所有的figure
%globalijyc1c2sathue;
xsize=640;
ysize=480;
m_inty=1;
m_hue=0;
m_sat=2;
y(1:
xsize,1:
ysize)=double(0.0);
c1(1:
xsize,1:
ysize)=double(0.0);
c2(1:
xsize,1:
ysize)=double(0.0);
sat(1:
xsize,1:
ysize)=double(0.0);
hue(1:
xsize,1:
ysize)=double(0.0);
%path1=sprintf('red%d.bmp',k);
Iinp=imread('c3.jpg');
image_r(:
:
)=Iinp(:
:
3);
image_g(:
:
)=Iinp(:
:
2);
image_b(:
:
)=Iinp(:
:
1);
%由RGB变成色差信号
[y,c1,c2]=Rgb_to_yc(image_r,image_g,image_b,xsize,ysize);
%由色差信号计算饱和度和色相
[sat,hue]=C_to_SH(c1,c2,xsize,ysize);
%亮度 饱合度 色调的调整
%ss=max(sat(:
));
%x=0:
1:
360;
%figure(10),hist(hue,x);
%figure(11),histfit(hue,x)
[hi,hj,hall]=find(hue>20&hue<340);
[len,dim1]=size(hi);
forkk=1:
len
sat(hi(kk),hj(kk))=0.0;
y(hi(kk),hj(kk))=0.0;
image_r(hi(kk),hj(kk))=0;
image_g(hi(kk),hj(kk))=0;
image_b(hi(kk),hj(kk))=0;
end
%y用一个适当的结构元素对Y进行开运算
Iout(:
:
3)=image_r(:
:
);
Iout(:
:
2)=image_g(:
:
);
Iout(:
:
1)=image_b(:
:
);
figure,imshow(sat);
figure,imshow(y);
figure,imshow(Iout);
ImageProcessingToolboxUser'sGuideimshowDisplayanimage
Syntaximshow(I,n)
imshow(I,[lowhigh])
imshow(BW)
imshow(X,map)
imshow(RGB)
imshow(...,display_option)
imshow(x,y,A,...)
imshowfilename
h=imshow(...)
根据实验原理我们了解到可以通过改变像素点色差范围来提取目标图片中不同色彩的物体。
附近时为红色,
附近为兰色,
附近为绿色而想要提取白色的目标图像,就要将范围改换到hue>20&hue<340之间,然后根据图片情况,酌情左右加减20度左右可
完成目标提取。
原图为:
hue>20&hue<340
到此便完成了目标提取。