1. 程式人生 > >【數字影象處理】影象邊緣銳化之微分運算

【數字影象處理】影象邊緣銳化之微分運算

影象邊緣銳化處理的目的

突出影象的細節,或者增強被模糊的細節,增強影象邊緣,便於提取目標物體的邊界,對影象進行分割、目標區域識別、區域形狀提取等為影象理解和分析打下基礎。

 

影象邊緣銳化的基本方法

  • 微分運算
  • 梯度銳化
  • 邊緣檢測

 

影象邊緣型別

通常,邊緣上的灰度變化平緩,而邊緣兩側灰度較快。影象的邊緣一般是指在區域性不連線的影象特徵。一般是區域性亮度變化最顯著的部分,灰度值的變化、顏色分量的突變都可構成邊緣資訊。

 

 

微分運算

我們用微分來定義兩個畫素點之間的變化率,兩個畫素點之間差值小,說明不是邊界,差值大,說明是邊界。

1.相減的結果反映了影象亮度變化率的大小。
2.畫素值保持不變的區域,相減的結果為零,即畫素為黑。
3.畫素值變化劇烈的區域,相減後得到較大的變化率,畫素灰度值差別越大,則得到的畫素就越亮,影象的垂直邊緣得到增強。
4.微分運算能夠增強邊緣和其他變化的區域,微分運算元的響應強度與影象再該點的突變程度有關。

 

 

單向水平微分運算:下列減上列

單向垂直微分運算:右列減左列

雙向微分運算:兩個方向同時進行微分,同時增強水平方向和垂直方向的邊緣

縱方向的微分平方加上水平方向的微分平方,然後開方。

單向垂直微分運算:下列減上列

單向水平微分運算:右列減左列

雙向微分運算:兩個方向同時進行微分,同時增強水平方向和垂直方向的邊緣。

雙向微分運算程式碼:我們一般要進行雙向計算,影象兩個方向都有邊界。

  
                 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]));
                     }
                 }

 

使用大律法進行全域性閾值計算,然後二值化,再做邊緣銳化的結果:

&n