Mahotas - 影像閾值化



影像閾值化是一種基於畫素強度將感興趣區域與背景分離的技術。它涉及設定一個閾值,將影像分為前景和背景。

強度高於閾值的畫素被分類為前景,而強度低於閾值的畫素被分類為背景。

這種二元分離允許進一步的分析,例如目標檢測、分割或特徵提取。影像閾值化可以應用於各種型別的影像,包括灰度影像和彩色影像,以簡化後續的處理和分析任務。

使用影像閾值化涉及選擇合適的閾值並將其應用於影像。閾值可以使用各種閾值化技術計算。

閾值化方法的選擇取決於影像特性、噪聲水平和所需結果等因素。

這裡,我們簡要討論了每種技術。更深入的資訊將在後面的章節中討論。

讓我們看看Mahotas中可以使用的每種閾值化技術:

Bernsen閾值化

Bernsen閾值化是一種將灰度影像中的前景與背景分離的閾值化技術。它根據每個畫素周圍鄰域內的最大和最小畫素強度計算區域性閾值。

如果畫素的強度更接近最大值,則將其視為前景的一部分;否則,將其視為背景的一部分。

讓我們看看下面的Bernsen閾值影像:

Bernsen Thresholding

廣義Bernsen閾值化

廣義Bernsen閾值化是對Bernsen閾值化方法的改進。它考慮鄰域內更廣泛的畫素強度範圍,而不僅僅是最大和最小強度值。

下面的影像顯示了廣義Bernsen閾值影像:

Generalized Bernsen Thresholding

Otsu閾值化

Otsu閾值化技術自動確定將前景與背景分離的最佳閾值。

Otsu方法迭代地檢查所有可能的閾值,並選擇使類間方差最大的閾值。

讓我們看看下面的Otsu閾值影像:

Otsu Thresholding

Riddler-Calvard閾值化

Riddler-Calvard閾值化也自動確定最佳閾值。它基於前景和背景方差加權和的最小化。

讓我們看看下面的Riddler-Calvard閾值影像:

Riddler-Calvard Thresholding

軟閾值化

軟閾值化是一種用於影像去噪的技術。它將強度值小於某個閾值的畫素設定為零。軟閾值化保留了影像的重要結構資訊,同時減少了噪聲。

下圖顯示了軟閾值化:

Soft Thresholding

示例

在下面的示例中,我們嘗試執行所有上述解釋的閾值化技術:

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image = mh.imread('sea.bmp', as_grey=True)
# Bernsen thresholding
bernsen = mh.thresholding.bernsen(image, 5, 5)
mtplt.imshow(bernsen)
mtplt.title('Bernsen Thresholding')
mtplt.axis('off')
mtplt.show()
# Generalized Bernsen thresholding
gbernsen = mh.thresholding.gbernsen(image, mh.disk(3), 10, 109)
mtplt.imshow(gbernsen)
mtplt.title('Generalized Bernsen Thresholding')
mtplt.axis('off')
mtplt.show()
# Otsu threshold
int_image_otsu = image.astype(np.uint8)
otsu = mh.otsu(int_image_otsu)
result_image = image > otsu
mtplt.imshow(result_image)
mtplt.title('Otsu Thresholding')
mtplt.axis('off')
mtplt.show()
# Riddler-Calvard threshold
int_image_rc = image.astype(np.uint8)
rc = mh.thresholding.rc(int_image_rc)
final_image = image > rc
mtplt.imshow(final_image)
mtplt.title('RC Thresholding')
mtplt.axis('off')
mtplt.show()
# Soft threshold
soft = mh.thresholding.soft_threshold(image, np.mean(image))
mtplt.imshow(soft)
mtplt.title('Soft Thresholding')
mtplt.axis('off')
mtplt.show()

輸出

獲得的輸出如下所示:

Bernsen閾值化

Bernsen Thresholding1

廣義Bernsen閾值化

Generalized Bernsen Thresholding1

Otsu閾值化

Otsu Thresholding1

Riddler-Calvard閾值化

Riddler-Calvard Thresholding1

軟閾值化

Soft Thresholding1

我們將在後面的章節中詳細討論所有閾值化技術。

廣告