關於具體在實際場景的使用和圖像會慢慢更新。
梯度銳化方法
圖像平滑往往使圖像中的邊界、輪廓變得模糊,為了減少影響,需要利用圖像銳化技術,使邊緣變得清晰。常用的方法有:
- 直接以梯度值代替
- 輔以門限判斷
- 給邊緣規定一個特定的灰度級
- 給背景規定灰度級
- 根據梯度二值化圖像
梯度運算
梯度銳化中,首先應該知道梯度是什么,怎么計算。
梯度是一個矢量,由分別沿x方向和y方向計算微分的結果構成。
構成有以下幾種方式:
梯度銳化
直接以梯度值代替
思路:目標圖像像素點用雙向一次微分結果替代。
for(int i = 1; i < Use_ROWS- 1; i++) { for(int j = 1; j < Use_Line -1; j++) { Image_Use[i][j] = sqrt((Image_Use[i][j+1] - Image_Use[i][j])*(Image_Use[i][j+1] - Image_Use[i][j])+(Image_Use[i+1][j] - Image_Use[i][j])*(Image_Use[i+1][j] - Image_Use[i][j])); } }
輔以門限判斷
思路:我們對梯度(變化率)取了一個預值,當圖像的梯度變化很小時,本來是物體內部的數據的亮度分布不均勻產生的偏差,可以不考慮進去。只有大於等於一定預值,才認為是邊界,否則恢復為原灰度值。
如果變化率超過了一定的預值,認為是邊界,因為邊界值還是很小,所以加上100,目的增強亮度(梯度),需要判斷一下這個值,如果大於255,直接等於255.
給邊緣規定一個特定的灰度級
思路:La為規定灰度值,我們對變化率取了一個預值,如果梯度大於等於預值,直接設置為la,否則恢復為原灰度值。
給背景規定灰度級
思路:Lb為規定灰度值,我們對變化率取了一個預值,如果梯度大於等於預值,使用梯度替代原像素值,否則為Lb。
根據梯度二值化圖像
思路:我們對變化率取了一個預值,如果梯度大於等於預值,置為255,否則置為0。
int tidu=0,tidu_Threshold=50;for(int i = 1; i < Use_ROWS- 1; i++) { for(int j = 1; j < Use_Line -1; j++) { tidu = sqrt((Image_Use[i][j+1] - Image_Use[i][j])*(Image_Use[i][j+1] - Image_Use[i][j])+(Image_Use[i+1][j] - Image_Use[i][j])*(Image_Use[i+1][j] - Image_Use[i][j])); if(tidu>tidu_Threshold) Image_Use[i][j] = 0; else Image_Use[i][j] = 255; } }