机器视觉与图像处理第一次作业
一、以下为两幅相差为180°的干涉图,使用计算机找出中心低反射圆环(光纤的中心坐标)
解:(处理均在MATLAB中进行)已经知道两幅干涉图,相位上有π的差距;考虑两张图像相加,消去干涉条纹,结果如下:
相加的结果是大部分的条纹被消去,但是仍然能够看到一些圆环的影响;对图像进行自动阈值二值化,可以更明显的看出,干涉条纹残余的影响:
手动设置阈值为0.285,能够在保留圆的基础上,尽可能的消去其余干涉圆环的影响:
之后对需要图像进行边缘检测,使用edge函数和sobel算子;检测结果如下:
发现在检测的结果中依然有大部分其余杂散点的影响,于是选择框定特定区域,该区域没有噪声:
记下框选的区域,在区域内对于二值化数值(find picture==1)进行检测,确定圆心的位置,再加上截取前的坐标,最后确定圆心的坐标:[370,253]
附:主要代码
x=imread('C:\Users\18868\Desktop\101.bmp');
y=imread('C:\Users\18868\Desktop\103.bmp');
z=imlincomb(0.5,x,0.5,y);%干涉图叠加
imshow(z);
z2 =imbinarize(z,0.285);%设定阈值二值化
imshow(z2);
z3=edge(z2,'sobel',0.285);%边缘检测
imshow(z3(200:350,370:550))%框选区域
z4=z3(200:350,370:550);
[y,x]=find(z4==1);%圆中像素的坐标集合
center_x=min(x)+(max(x)-min(x))/2;
center_y=min(y)+(max(y)-min(y))/2;%找圆心坐标
%center_x=370;
%center_y=253;%求出的圆心坐标(加上截取的部分)
imshow(z3);
hold on;
plot(center_x,center_y,'*');%画出圆心
二、以真实图像为“原材料”,用计算机生成一副有趣奇怪的图像
原图:
主要目标是给钱江新城的夜景加上烟火的效果
问题是想把烟火加在左上角的位置,不遮挡主要建筑物;
考虑使用imcrop函数,先对图像进行裁切,之后进行同尺寸处理,再叠加;
调整透明度之后,获得最后的效果:
附:主要代码
x=imread('C:\Users\18868\Desktop\钱江新城.jpg');
y=imread('C:\Users\18868\Desktop\烟火.jpg');
z=imcrop(y);
imshow(z);
z1=imresize(z,[793,1487]);
t=x+1.2*z1;
imshow(t);