当前位置:文档之家› 机器视觉与智能检测相关课题创新实践-实验报告

机器视觉与智能检测相关课题创新实践-实验报告

《机器视觉与智能检测相关创新实践》课外实验报告实验一、图像融合1.实验内容:对同一场景的红外图像和可见光图像进行融合,采用图1中的参考图形,以及自己的手掌图像(可见光图像和红外光图像),并对结果进行简要分析,融合方法可采用以下方法中的一种或多种:直接加权融合方法,傅里叶变换融合方法,小波变换融合方法;2.实验目标:1). 了解融合的概念;2). 比较融合方法中不同参数的效果(如直接加权融合中权值的分配)3.参考图像:(a)红外图像(b)可见光图像图1 待融合图像4.实验内容1)直接加权融合方法:线性混合操作也是一种典型的二元(两个输入)的像素操作:通过在范围内改变。

核心代码:image((Y1+Y2)/2); %权值相等图2 直接融合图像1图3 直接融合图像2改变参数的影响:那个图的参数比例高,那个图在融合图像中的影响就越高。

2)傅里叶变换融合:对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分。

也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。

然后通过在频域的处理来实现融合。

图4傅里叶变换融合图像1图5 傅里叶变换融合23)小波融合:小波变换(Wavelet Transform)是一种新型的工程数学工具,由于其具备的独特数学性质与视觉模型相近,因此,小波变换在图像处理领域也得到了广泛的运用。

用在图像融合领域的小波变换,可以说是金字塔方法的直接拓展。

图6 小波融合1图7 小波融合25.实验完整代码1.直接融合addpath('E:\学习\课件\机器视觉创新实践\曾东明') Y1=imread('1.PNG');subplot(1,3,1);imshow(Y1);title(' 直接融合1.PNG');Y2=imread('2.PNG');subplot(1,3,2);imshow(Y2);subplot(1,3,3);image((Y1+Y2)/2);Y1=imread('057_L_VL.bmp'); subplot(1,3,1);imshow(Y1);title('直接融合图像1');Y2=imread('057_L_IR.bmp'); subplot(1,3,2);imshow(Y2);title('图像2');subplot(1,3,3);Y1=rgb2gray(Y1);image((Y1+Y2)/2);2.傅里叶变换Y1=imread('1.PNG');subplot(1,3,1);imshow(Y1);title('傅里叶变换融合1.PNG'); Y2=imread('2.PNG');subplot(1,3,2);imshow(Y2);title('2.PNG');F1=fft2(Y1);F2=fft2(Y2);X=abs(ifft2(F1+F2)/2);subplot(1,3,3);image(X);Y1=imread('057_L_VL.bmp'); subplot(1,3,1);imshow(Y1);title('傅里叶变换融合图像1'); Y2=imread('057_L_IR.bmp'); subplot(1,3,2);imshow(Y2);title('图像2');Y1=rgb2gray(Y1);F1=fft2(Y1);F2=fft2(Y2);X=abs(ifft2(F1+F2)/2);subplot(1,3,3);image(X);3.小波融合addpath('E:\学习\课件\机器视觉创新实践\曾东明') Y1=imread('1.PNG');subplot(1,3,1);imshow(Y1);title('db4 小波变换1.PNG');Y2=imread('2.PNG');subplot(1,3,2);imshow(Y2);title('2.PNG');Y1=double(Y1);Y2=double(Y2);[c3,L1]=wavedec2(Y1,2,'db4');[c4,L2]=wavedec2(Y2,2,'db4');W=c3+c4;YY=waverec2(W,L1,'db4');subplot(1,3,3);YY=double(YY);image(YY);Y1=imread('057_L_VL.bmp');subplot(1,3,1);imshow(Y1);title('db4小波融合图像1');Y2=imread('057_L_IR.bmp');subplot(1,3,2);imshow(Y2);title('图像2');Y1=rgb2gray(Y1);Y1=double(Y1);Y2=double(Y2);[c3,L1]=wavedec2(Y1,2,'db4');[c4,L2]=wavedec2(Y2,2,'db4');W=c3+c4;YY=waverec2(W,L1,'db4');subplot(1,3,3);YY=double(YY);image(YY);实验二、图像分割1.实验内容:1). 采用不同的分割方法(查阅书籍,文献资料和专业论坛)对采集的掌静脉图像进行前景和背景的分离,获得二值化手形图像,示例见图2;图8 手形分割示例2.实验目标:1). 了解图像分割方法的概念和效果2). 分析和比较不同分割方法的优劣3.参考图像:自己的掌纹和掌脉图像4.实验内容:1、用graythread函数获取阈值后分割图92、迭代法迭代法的的设计思想是,开始时选择一个阈值作为初始估计值,然后按某种策略不断的改进这一估计值,直到满足给定的准则为止。

步骤如下:1)选择T的初始估计值2)用T分割图像,生成两组像素:G1:所有灰度值大于T的像素G2:所有灰度值大于T的像素3)计算G1和G2中的所有像素平均灰度值u1和u24)计算新的阈值T=(u1+u2 )/25)重复2-4直到逐次迭代获得的T值之差<T0图103、类间最大距离法:所谓聚类算法,是采用模式识别中的聚类思想,以类内保持最大相似性以及类内保持最大距离为目标,通过迭代优化获得最佳的图像分割阈值。

图114、均匀性度量法图124、实验完整代码:1、addpath('E:\学习\课件\机器视觉创新实践\曾东明'); I=imread('057_L_VL.bmp');subplot(1,2,1);imshow(I);I1=rgb2gray(I);I2=im2double(I1);a=graythresh(I2);g=im2bw(I2,a);subplot(1,2,2);imshow(g);2、clc;clear all;addpath('E:\学习\课件\机器视觉创新实践\曾东明'); f0=imread('057_L_VL.bmp');f=rgb2gray(f0);f=im2double(f);T=0.5*(min(f(:))+max(f(:)));done=false;while ~doneg=f>=T;Tn=0.5*(mean(f(g))+mean(f(~g)));done=abs(T-Tn)<0.1;T=Tn;endTr=im2bw(f,T);subplot(1,2,1),imshow(f0),title('原图');subplot(1,2,2),imshow(r),title('迭代法');3、clc;clear all;addpath('E:\学习\课件\机器视觉创新实践\曾东明'); I0=imread('057_L_VL.bmp');I=rgb2gray(I0);I=double(I);[m,n]=size(I);Smax=0;for T=0:255sum1=0; num1=0;sum2=0; num2=0;for i=1:mfor j=1:nif I(i,j)>=Tsum2=sum2+I(i,j);num2=num2+1;elsesum1=sum1+I(i,j);num1=num1+1;endendendave1=sum1/num1;ave2=sum2/num2;S=((ave2-T)*(T-ave1))/(ave2-ave1)^2;if(S>Smax)Smax=S;Th=T;endendThfigure,imshow(uint8(I)),title('原图');for i=1:mfor j=1:nif I(i,j)>=ThI(i,j)=255;elseI(i,j)=0;endendendsubplot(1,2,1),imshow(I0),title('原图');subplot(1,2,2),imshow(I),title('类间最大距离法'); 4、clc;clear all;addpath('E:\学习\课件\机器视觉创新实践\曾东明'); I0=imread('057_L_VL.bmp');I=rgb2gray(I0);I=double(I);[m,n]=size(I);Smax=-1;for T=0:255sum1=0; num1=0;sum2=0; num2=0;for i=1:mfor j=1:nif I(i,j)>=Tsum2=sum2+I(i,j);num2=num2+1;elsesum1=sum1+I(i,j);num1=num1+1;endendendave1=sum1/num1;ave2=sum2/num2;ave=(sum1+sum2)/(m*n);d1=-1;d2=-1;for i=1:mfor j=1:nif I(i,j)>=Td=(I(i,j)-ave2)^2;if d2==-1d2=d;elsed2=d2+d;endelsed=(I(i,j)-ave1)^2;if d1==-1d1=d;elsed1=d1+d;endendendendp1=num1/(m*n);p2=num2/(m*n);S1=p1*(ave1-ave)^2+p2*(ave2-ave)^2;S2=p1*d1+p2*d2;S=S1/S2;if S>SmaxSmax=S;Th=T;endendThfor i=1:mfor j=1:nif I(i,j)>=ThI(i,j)=255;elseI(i,j)=0;endendendsubplot(1,2,1),,imshow(I0),title('原图');subplot(1,2,2),,imshow(I),title('均匀度度量算法');。

相关主题