[Computer Vision]距離變換與OTSU二值化

1 距離變換

以O(shè)pencv的distanceTransform距離變換為例。

1.1 梗概

計(jì)算圖像中每一個(gè)非零點(diǎn)距離離自己最近零點(diǎn)的距離,distanceTransform的第二個(gè)Mat矩陣參數(shù)dst保存了每一個(gè)點(diǎn)與最近的零點(diǎn)的距離信息,圖像上越亮的點(diǎn),代表了離零點(diǎn)的距離越遠(yuǎn)。

1.2 詳解

1.2.1 變換

Distance fields can also be signed, in the case where it is important to distinguish whether the point is inside or outside of the shape.[1]
Usually the transform/map is qualified with the chosen metric. For example, one may speak of Manhattan distance transform, if the underlying metric is Manhattan distance

  • 上方翻譯具體表達(dá):
    距離變換可以表示區(qū)分改點(diǎn)在幾何圖形的內(nèi)部或外部。(根據(jù)變換后的距離值)
    變換圖常用度量標(biāo)準(zhǔn),例如曼哈頓距離

  • 歐式距離也可以,但是歐式距離不長用于距離變換中(Euclidean Metric)

1.2.1.1 下圖為歐式距離和曼哈頓距離的區(qū)別
image.png
1.2.1.2 距離變換 (曼哈頓距離(Manhattan distance)標(biāo)準(zhǔn)講解)

以二值圖像為例,計(jì)算0到非0的距離;其中區(qū)域塊內(nèi)部的像素值為1,其他像素值為0。距離變換給出每個(gè)像素點(diǎn)到最近的區(qū)域塊邊界的距離,區(qū)域塊內(nèi)部的距離變換結(jié)果為0。輸入圖像如圖1所示,D4距離的距離變換結(jié)果如圖2所示。

image
image.png
image

具體的距離變換的距離計(jì)算可以多種多樣,只是不同方法性能不一。
常用『掩模』

1.2.2 舉例

變換前(二值化/開運(yùn)算)


before distance transform

變換后


distanceTransform

1.3 用途

1.3.1 watershed 分水嶺算法 ( 細(xì)化輪廓 )
image.png

image.png

image.png

image.png
  • 前方開運(yùn)算+腐蝕(去除噪點(diǎn)和非必要連接處)+膨脹(消化腐蝕影響)- 記為A

  • 距離變換,求曼哈頓距離 - 記為B

  • 二值化,細(xì)化具體輪廓 - 記為C

  • A - C = D (邊界)

  • 創(chuàng)建標(biāo)記(marker,它是一個(gè)與原始圖像大小相同的矩陣,int32數(shù)據(jù)類型),表示其中的每個(gè)區(qū)域。分水嶺算法將標(biāo)記的0的區(qū)域視為不確定區(qū)域,將標(biāo)記為1的區(qū)域視為背景區(qū)域,將標(biāo)記大于1的正整數(shù)表示我們想得到的前景 (使用 cv2.connectedComponents() 來實(shí)現(xiàn)這個(gè)功能) (連接組件標(biāo)記算法(connected component labeling algorithm)是圖像分析中最常用的算法之一,算法的實(shí)質(zhì)是掃描二值圖像的每個(gè)像素點(diǎn),對于像素值相同的而且相互連通分為相同的組(group),最終得到圖像中所有的像素連通組件。)

  • E = connectedComponents(C)
    連通處理之后返回的標(biāo)記圖像

cv2.connectedComponents
# 去重后的標(biāo)記區(qū)域的點(diǎn)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 36, 32, 33, 35, 37]
連通標(biāo)記之后 plt.show.png
  • F = E+1 , 分水嶺對所有標(biāo)注都要>1

  • F[D=255(邊界)] = 0 (背景區(qū)域)

  • 所以 F[F>1] 前景 ;F[F=1] 未知區(qū)域 ;F[F=0] 背景 Add one to all labels so that sure background is not 0, but 1

  • D = watershed(img, F)

1.3.2 細(xì)化輪廓和查找物體質(zhì)心
image.png
image.png

1.4 其他

1.5 參考文獻(xiàn)

2 OTSU二值化算法 (類間方差)

是日本學(xué)者大津(OTSU)提出來的

2.1 梗概

大津法(OTSU)是一種確定圖像二值化分割閾值的算法,由日本學(xué)者大津于1979年提出

2.2 詳解

2.2.1 算法過程
  • 轉(zhuǎn)灰度圖

  • 創(chuàng)建直方圖 Histograms

  • 直方圖平滑 Histograms_smooth

  • 注意:以下均需要loop 0~255 像素點(diǎn)(和直方圖)
    i代表當(dāng)前l(fā)oop item的灰度值,p(i) 代表該灰度值所在直方圖的點(diǎn)數(shù)
    均需要?dú)w一化[0,1]

  • 前景圖像總點(diǎn)數(shù)w0,后景圖像總點(diǎn)數(shù)w1


    image.png
  • 前景平均灰度值u0 ,景平均灰度值u1,總灰度值uT(質(zhì)量矩)


    image.png

    對應(yīng)關(guān)系


    image.png
  • 求類間方差
    前景 * ()


    image.png
  • 最大類間方差時(shí)對應(yīng)的灰度的i就是最佳閾值

說白了就是一張圖下, [0,t) , [t,255] 分別代表前景,后景的兩個(gè)區(qū)間分兩類,
然后分別求對于質(zhì)量矩的方差所決定的最佳閾值。
(其中還有`前景總點(diǎn)數(shù)(權(quán)重)`和后景的乘積有關(guān)系)
2.2.2 過程圖示
image.png

image.png

2.3 使用

2.3.1 二值化圖像
image.png
image.png

2.4 其他

2.5 參考文獻(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容