二值形态学操作、图像的边缘检测、图像编码
?
實驗五 二值形態學操作
一、實驗目的
 了解二值形態學的基本運算
 掌握基本形態學運算的Matlab實現
 了解形態操作的應用
二、原理
??? 收縮和膨脹是數學形態學最基本的變換,數學形態學的應用幾乎覆蓋了圖像處理的所有領域,給出利用數學形態學對二值圖像處理的一些運算。
??? 膨脹就是把連接成分的邊界擴大一層的處理。而收縮則是把連接成分的邊界點去掉從而縮小一層的處理。若輸出圖像為g(i,j),則它們的定義式為二值圖像目標X是E的子集。用B代表結構元素,Bs代表結構元素B關于原點(0 , 0)的對稱集合:
即Bs是B旋轉180°獲得的。給出了三種簡單的結構元素。膨脹和腐蝕變換的定義式為:
膨脹
腐蝕
Matlab中用imdilate函數實現膨脹。用法為:
Imdilate(X,SE).其中X是待處理的圖像,SE是結構元素對象。
例如:
bw = imread('text.tif');
se = strel('line',11,90);
bw2 = imdilate(bw,se);
imshow(bw), title('Original')
figure, imshow(bw2), title('Dilated')
Matlab用imerode函數實現圖像腐蝕。用法為:
Imerode(X,SE).其中X是待處理的圖像,SE是結構元素對象。
例如:
I = imread('cameraman.tif');
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
三、練習
1 讀取一幅圖像,進行骨架化操作并得到其邊界
2 讀取一幅圖像,轉化為二進制圖像,并計算其面積
3讀取一幅圖像,比較不同距離變換的圖像效果
實驗六、圖像的邊緣檢測
一、實驗目的
1、了解圖像邊緣提取的基本概念;
2、了解進行邊緣提取的基本方法;
3、掌握用MATLAB語言進行圖像邊緣提取的方法。
二、實驗原理
??? 圖像理解是圖像處理的一個重要分支,研究為完成某一任務需要從圖像中提取哪些有用的信息,以及如何利用這些信息解釋圖像。邊緣檢測技術對于處理數字圖像非常重要,因為邊緣是所要提取目標和背景的分界線,提取出邊緣才能將目標和背景區分開來。在圖像中,邊界表明一個特征區域的終結和另一個特征區域的開始,邊界所分開區域的內部特征或屬性是一致的,而不同的區域內部的特征或屬性是不同的,邊緣檢測正是利用物體和背景在某種圖像特性上的差異來實現的,這些差異包括灰度,顏色或者紋理特征。邊緣檢測實際上就是檢測圖像特征發生變化的位置。
??? 由于噪聲和模糊的存在,檢測到的邊界可能會變寬或在某些點處發生間斷,因此,邊界檢測包括兩個基本內容:首先抽取出反映灰度變化的邊緣點,然后剔除某些邊界點或填補邊界間斷點,并將這些邊緣連接成完整的線。邊緣檢測的方法大多數是基于方向導數掩模求卷積的方法。
??? 導數算子具有突出灰度變化的作用,對圖像運用導數算子,灰度變化較大的點處算得的值比較高,因此可將這些導數值作為相應點的邊界強度,通過設置門限的方法,提取邊界點集。
??? 一階導數與是最簡單的導數算子,它們分別求出了灰度在x和y方向上的變化率,而方向α上的灰度變化率可以用相應公式進行計算;對于數字圖像,應該采用差分運算代替求導,差分公式參考相關教材?! ?br /> ??? 函數f在某點的方向導數取得最大值的方向是,方向導數的最大值是稱為梯度模。利用梯度模算子來檢測邊緣是一種很好的方法,它不僅具有位移不變性,還具有各向同性。為了運算簡便,實際中采用梯度模的近似形式。另外,還有一些常用的算子,如Roberts算子和Sobel算子。
??? 由于Sobel算子是濾波算子的形式,用于提取邊緣。我們可以利用快速卷積函數,簡單有效,因此應用很廣泛。
??? 拉普拉斯高斯(loG)算法是一種二階邊緣檢測方法。它通過尋找圖像灰度值中二階微分中的過零點(Zero Crossing)來檢測邊緣點。其原理為,灰度級變形成的邊緣經過微風算子形成一個單峰函數,峰值位置對應邊緣點;對單峰函數進行微分,則峰值處的微分值為0,峰值兩側符號相反,而原先的極值點對英語二階微分中的過零點,通過檢測過零點即可將圖像的邊緣提取出來。
??? MATLAB的圖像處理工具箱中提供的edge函數可以實現檢測邊緣的功能,其語法格式如下:
BW = edge(I,'sobel')
BW = edge(I,'sobel',direction)
BW = edge(I,'roberts')
BW = edge(I,'log')
這里BW = edge(I,'sobel')采用Sobel算子進行邊緣檢測。BW = edge(I,'sobel',direction)可以指定算子方向,即:
direction=’horizontal’,為水平方向;
direction=’vertical’,為垂直方向;
direction=’both’,為水平和垂直兩個方向。
BW = edge(I,'roberts')和BW = edge(I,'log')分別為用Roberts算子和拉普拉斯高斯算子進行邊緣檢測。
例:用三種算子進行邊緣檢測。
I=imread('eight.tif');
imshow(I)
BW1=edge(I,'roberts');
figure ,imshow(BW1),title('用Roberts算子')
BW2=edge(I,'sobel');
figure,imshow(BW2),title('用Sobel算子 ')
BW3=edge(I,'log');
figure,imshow(BW3),title('用拉普拉斯高斯算子')
三、實驗要求
1、 讀出MATLAB圖像處理工具箱中提供的rice.tif這幅圖像,并顯示。
2、 分別用Roberts,Sobel和拉普拉斯高斯算子對圖像進行邊緣檢測。比較三種算子處理的不同之處。
實驗七?? 圖像編碼
一 實驗目的
1 了解圖像編碼的基本方法
2 了解Matlab實現圖像編碼
二 實驗原理
1 行程編碼
??? 行程編碼又稱行程長度編碼(RLE,Run Length Encoding),是一種熵編碼,其編碼原理相當簡單,即將具有相同值的連續串用其串長和一個代表值來代替,該連續串就稱之為行程或行程,串長稱為行程長度。例如,有一字符串“aabbbcddddd”,則經行程長度編碼后,可以只用“2a3b1c5d”來表示。
2 霍夫曼編碼
??? Huffman方法根據源數據符號發生的概率進行編碼。在源數據中出現概率越大的符號,相應的碼越短;出現概率越小的符號,其碼長越長,從而達到用盡可能少的碼符號表示源數據。它在變長編碼方法中是最佳的。
??? 通過如下實例來說明這種編碼方法。
??? 設有編碼輸入 。其頻率分布分別為 ,P(x2)=0.3, , , , ?,F求其最佳霍夫曼編碼 。
??? 具體編碼方法是:①把輸入元素按其出現概率的大小順序排列起來,然后把最末兩個具有最小概率的元素之概率加起來;②把該概率之和同其余概率由大到小排隊,然后再把兩個最小概率加起來,再重新排隊;③重復②,直到最后只剩下兩個概率為止。
3.預測編碼
??? 預測編碼是基于圖像數據的空間或時間冗余特性,用相鄰的已知像素(或像素塊)來預測當前像素(或像素塊)的取值,然后再對預測誤差進行量化和編碼。
FROM http://hi.baidu.com/zjlu/blog/item/e1f5e71fc7d1420e314e1574.html
THX !
?
總結
以上是生活随笔為你收集整理的二值形态学操作、图像的边缘检测、图像编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谚语幸运的开始
- 下一篇: J2ME开发环境配置(MyEclipse