图像处理(matlab)

1.基本函数:

iread('文件路径');

idisp();

2.一元操作:o[u,v]=f(I[u,v])

imd=idouble(im);  //将像素从unit8(范围在0-255的整数像素)到范围在[0,1]的双精度值

grey=imono(im);    //将彩色图像转变成灰度图像。

ihist();//显示每一个像素值出现的次数

im=igamma(im,1/0.45); //伽马编码,一种非线性一元操作

3.二元操作:o[u,v]=f(I_{1}[u,v],I_{2}[u,v])

isamesize(image1,image2);  //将2缩放并裁剪到跟1相同的大小

........

4.空间操作o[u,v]=f(I[u+i,v+j])

 

4.1互相关 o[u,v]=\sum _{(i,j)\epsilon w }I[u+i,v+j]K[i,j], K是互相关核,对于每一个输出像素,对应输入图像中的像素窗口w要逐个元素地与互相关核K相乘。

在工具箱中,互相关使用函数iconv表示。iconv(image,K);

 

4.1.1平滑处理(光滑化、模糊化或者散焦)

K=ones(21,21)/21^2; //每一个输出像素都是输入图像中与之相对应的21x21相领像素的平均值  ->平均值滤波

G(u,v)=\frac{1}{2\pi\sigma ^{2} }e^{-\frac{u^{2}+v^{2}}{2\sigma ^{2}}}  二维高斯函数(关于原点对称,曲线下方体积为1)的扩展由标准差参数\sigma控制。 ->高斯滤波

K=kguass(5); //指定标准差为5像素

 

4.1.2边界检测:
 lena=iread('C:\Users\Administrator\Desktop\matlab实验照片\2.jpeg','double','grey');

 p=lena(60,:);  //在v=60处图像中的一条水平线

沿着这个横截面的一阶倒数是p^{^{'}}[v]=p[v]-p[v-1],一阶倒数可以用diff函数计算。->亮度变化的倒数

在v点处的导数也可以写成对称的一阶差分:p^{^{'}}[v]=\frac{1}{2}(p[v+1]-p[v-1])

它等同于和下面的一维互相关核求互相关运算:

                                                                 K=(-\frac{1}{2} 0 \frac{1}{2})

将图像与这个核求互相关:

K=[-0.5 0 0.5];

idsip(iconv(lena,K),'invsigned')    ->图片具有高水平梯度的竖直边缘清晰可见。效果如下所示(上面为原图):

图像处理(matlab)_第1张图片  

图像处理(matlab)_第2张图片

利用索伯互相关核计算水平梯度,利用三行水平梯度的加权值。

Du=ksobel,上图为原图,下面为处理之后的

图像处理(matlab)_第3张图片

图像处理(matlab)_第4张图片

坎尼算子:

算法大致流程:

1、求图像与高斯平滑滤波器卷积:

2、使用一阶有限差分计算偏导数的两个阵列P与Q:

3、幅值和方位角:

4、非极大值抑制(NMS ) :细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。

将梯度角的变化范围减小到圆周的四个扇区之一,方向角和幅值分别为:

非极大值抑制通过抑制梯度线上所有非屋脊峰值的幅值来细化M[i,j],中的梯度幅值屋脊.这一算法首先将梯度角θ[i,j]的变化范围减小到圆周的四个扇区之一

edges=icanny(lena,2);效果如下所示:

图像处理(matlab)_第5张图片

4.2模板匹配O[u,v]=s(T,W)

函数s(T,W)是一个标量测度,用来描述两幅相同大小的图像T和W之间的相似性。

常用方法有:绝对差值(SAD),差值平方和(SSD)以及互相关(NCC)

 

你可能感兴趣的:(camera)