1.基本函数:
iread('文件路径');
idisp();
2.一元操作:
imd=idouble(im); //将像素从unit8(范围在0-255的整数像素)到范围在[0,1]的双精度值
grey=imono(im); //将彩色图像转变成灰度图像。
ihist();//显示每一个像素值出现的次数
im=igamma(im,1/0.45); //伽马编码,一种非线性一元操作
3.二元操作:
isamesize(image1,image2); //将2缩放并裁剪到跟1相同的大小
........
4.空间操作
4.1互相关 , K是互相关核,对于每一个输出像素,对应输入图像中的像素窗口w要逐个元素地与互相关核K相乘。
在工具箱中,互相关使用函数iconv表示。iconv(image,K);
4.1.1平滑处理(光滑化、模糊化或者散焦)
K=ones(21,21)/21^2; //每一个输出像素都是输入图像中与之相对应的21x21相领像素的平均值 ->平均值滤波
二维高斯函数(关于原点对称,曲线下方体积为1)的扩展由标准差参数控制。 ->高斯滤波
K=kguass(5); //指定标准差为5像素
4.1.2边界检测:
lena=iread('C:\Users\Administrator\Desktop\matlab实验照片\2.jpeg','double','grey');
p=lena(60,:); //在v=60处图像中的一条水平线
沿着这个横截面的一阶倒数是,一阶倒数可以用diff函数计算。->亮度变化的倒数
它等同于和下面的一维互相关核求互相关运算:
将图像与这个核求互相关:
K=[-0.5 0 0.5];
idsip(iconv(lena,K),'invsigned') ->图片具有高水平梯度的竖直边缘清晰可见。效果如下所示(上面为原图):
利用索伯互相关核计算水平梯度,利用三行水平梯度的加权值。
Du=ksobel,上图为原图,下面为处理之后的
坎尼算子:
算法大致流程:
1、求图像与高斯平滑滤波器卷积:
2、使用一阶有限差分计算偏导数的两个阵列P与Q:
3、幅值和方位角:
4、非极大值抑制(NMS ) :细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。
将梯度角的变化范围减小到圆周的四个扇区之一,方向角和幅值分别为:
非极大值抑制通过抑制梯度线上所有非屋脊峰值的幅值来细化M[i,j],中的梯度幅值屋脊.这一算法首先将梯度角θ[i,j]的变化范围减小到圆周的四个扇区之一
edges=icanny(lena,2);效果如下所示:
4.2模板匹配
函数s(T,W)是一个标量测度,用来描述两幅相同大小的图像T和W之间的相似性。
常用方法有:绝对差值(SAD),差值平方和(SSD)以及互相关(NCC)