NO IMAGE

影象處理初步

基本作圖函式

函式名註釋
plot繪製連續波形
stem繪製離散波形
axis定義x,y座標軸標度
subplot分割圖形視窗
hold保留目前曲線
grid畫網格線
title為圖形加標題
xlable為x軸加軸標
ylable為y軸加軸標
text在圖上加文字說明
gtext用滑鼠在圖上加文字說明

影象型別使之陣列數值與畫素顏色之間定義的關係,它和影象格式概念不同,在MATLAB影象處理工具箱中有五種型別的影象,在這裡簡單介紹二進位制影象與灰度值影象

二進位制影象

在一副二進位制影象中,每一個畫素將去兩個離散數值(0或1)中的一個,從本質上說,這兩個數值分別代表狀態“開(on)”或“關(off)”.

灰度值影象

灰度影象通常由一個unit8、unit16或裝精度型別的陣列來描述,其實質是一個資料矩陣,該矩陣中的資料軍代表了在一定範圍內的灰度級,每一個元素對應於影象的一個畫素點,通常0代表黑色,1、255或65 535(針對不同儲存型別)代表白色。

影象型別間的轉換

I = rgb2gray(RGB)

rgb2gray是一種函式,功能是將真彩色影象轉換為灰度

BW = im2bw(I,level)
BW = im2bw(RGB,level)

通過設定亮度閥值將灰度影象及RGB影象轉換成二值影象
輸出的二值影象在輸入影象所有亮度小於給定值(level取值範圍為【0,1】畫素點處均為0,其他處為1),其中level的確定可以認為指定,也可以使用最大類值差方法自動確定level值
即:level = graythresh(I)

I=mat2gray(X,[xmin,xmax])

按指定的區至區間[xmin,xmax]將資料矩陣 X 轉化為灰度影象 I ,xmin對應灰度值0(最暗即黑),xmax對應灰度1(最亮即白)。如果不指定區間,MATLAB則自動將 X 矩陣中最小值設為xmin,對大致設為xmax

影象運算

  • 影象放大
B = imresize( A,m,method )
B = imresize( A,[mrows,mcols],method )
B = imresize( A,m,method,n )
B = imresize( A,m,method,h )

A為影象,m為放大縮小倍數,method為插值方法,可選值為‘nearest(最近鄰插值)’‘bilinear(雙線性插值)’’bicubic(雙立方插值)’,上述方法2返回一個mrows行,mcols列的影象
在使用bilinear和bicubic方法縮小圖片時,為消除引入的高頻成分,imresize使用一個前端平滑濾波器,預設11*11,也可通過n指定
第四種方法是使用使用者設計的插值核h進行插值,h可以看做一個二維FIR濾波器

  • 影象旋轉
B=imrotate(A,angle,method,'crop')

通過指定crop引數對旋轉後的影象進行剪下(取影象中間部分),把影象進行angle角度旋轉,然後返回與A大小相同的中間部分

-影象裁剪

I2=imcrop(I)
RGB2=imcrop(RGB1)

互動式對灰度影象和真彩影象進行裁剪,顯示影象,允許用滑鼠指定裁剪矩形

I2=imcrop(I,rect)
RGB2=imcrop(RGB1,rect)

非互動式裁剪,rect為四元素向量【xmin,ymin,width,height】,分別表示矩陣的左上角座標,寬度和長度

影象分析

figure
imcontour(I) %顯示影象的輪廓
imhist(I,n)  %顯示灰度圖中的灰度分佈,n為指定灰度級
  • 灰度影象的邊緣:edge函式
BW = edge( I,method )
BW = edge( I,method,thresh )
BW = edge( I,method,thresh,direction )
BW = edge( I,'log',thresh,sigma )

edgd函式返回和 I 大小一樣的二進位制推向BW,其中元素1為發現 I 的邊緣,
Method引數列表為:
‘sobel’ 預設值,用導數的sobel近似值檢測邊緣,那些梯度最大點返回邊緣
‘prewitt’ 用導數的prewitt近似值檢測邊緣,那些梯度最大點返回邊緣
‘roberts’ 用導數的roberts近似值檢測邊緣,那些梯度最大點返回邊緣
‘log’ 使用高斯濾波器的拉普拉斯運算對 I 進行濾波,通過尋找0相交檢測邊緣
‘zerocross’ 使用指定的濾波器對 I 濾波後,尋找0相交檢測邊緣
用thresh指定靈敏度閾值,所有不強於該值的邊緣都被忽略掉
對‘sobel’和 ‘prewitt’ 指定direction 方向:‘horizontal(水平)’‘vertical(垂直)’‘both(預設值)’
用sigma指定標準偏差

  • 影象平滑
    1、向影象加噪聲
J=imnoise(I,'gaussian',M,V)
J=imnoise(I,'salt&pepper',D)
J=imnoise(I,'speckle',V)

方法1:在影象中加入均值為M,方差為V的高斯白噪聲,預設值:0,0.01
方法2:在影象中加入強度為D的“樹鹽”黑白畫素點,預設值:0.05
方法3:使用公式J=I n*I,向影象中加入乘法噪聲,其中n是均值為0,方差值為V的均勻分佈隨機噪聲,預設值:0.04
2、二維中值濾波器

B=medfilt2( A,[M,N] )

對矩陣A進行二維中值濾波。每個輸出畫素包含輸入影象中相應畫素週期的M*N鄰域的中值。在影象邊緣新增0,因此邊緣在【M,N】/2內的點可能發生扭曲,預設值:【3,3】