圖像處理(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')    ->圖片具有高水平梯度的豎直邊緣清晰可見。效果如下所示(上面爲原圖):

  

利用索伯互相關覈計算水平梯度,利用三行水平梯度的加權值。

Du=ksobel,上圖爲原圖,下面爲處理之後的

坎尼算子:

算法大致流程:

1、求圖像與高斯平滑濾波器卷積:

2、使用一階有限差分計算偏導數的兩個陣列P與Q:

3、幅值和方位角:

4、非極大值抑制(NMS ) :細化幅值圖像中的屋脊帶,即只保留幅值局部變化最大的點。

將梯度角的變化範圍減小到圓周的四個扇區之一,方向角和幅值分別爲:

非極大值抑制通過抑制梯度線上所有非屋脊峯值的幅值來細化M[i,j],中的梯度幅值屋脊.這一算法首先將梯度角θ[i,j]的變化範圍減小到圓周的四個扇區之一

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

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

函數s(T,W)是一個標量測度,用來描述兩幅相同大小的圖像T和W之間的相似性。

常用方法有:絕對差值(SAD),差值平方和(SSD)以及互相關(NCC)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章