當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python skimage.filters.unsharp_mask用法及代碼示例

用法:

skimage.filters.unsharp_mask(image, radius=1.0, amount=1.0, multichannel=False, preserve_range=False, *, channel_axis=None)

不銳化掩蔽濾鏡。

清晰的細節被識別為原始圖像與其模糊版本之間的差異。然後將這些細節縮放,並添加回原始圖像。

參數

image[P, ..., ]M[, N][, C] ndarray

輸入圖像。

radius標量或標量序列,可選

如果給定一個標量,那麽它的值將用於所有維度。如果給出了序列,那麽除了多通道圖像的最後一個維度之外,每個維度都必須有一個半徑。請注意,0 半徑表示沒有模糊,並且不允許使用負值。

amount標量,可選

細節將被這個因子放大。該因子可以為 0 或負數。通常,它是一個小的正數,例如1.0。

multichannel布爾型,可選

如果為真,最後一個image維度被視為顏色通道,否則視為空間。顏色通道是單獨處理的。此參數已棄用:指定channel_axis反而。

preserve_range布爾型,可選

是否保持原來的取值範圍。否則,輸入圖像將根據 img_as_float 的約定進行轉換。另見https://scikit-image.org/docs/dev/user_guide/data_types.html

channel_axisint 或無,可選

如果為 None,則假定圖像是灰度(單通道)圖像。否則,此參數指示數組的哪個軸對應於通道。

返回

output[P, ..., ]M[, N][, C] ndarray of float

應用了模糊蒙版的圖像。

其他參數

multichannelDEPRECATED

已棄用以支持channel_axis。

注意

Unsharp masking 是一種圖像銳化技術。它是一種線性圖像操作,並且數值穩定,不像是ill-posed 問題的反卷積。由於這種穩定性,它通常比反卷積更受歡迎。

主要思想如下:銳利的細節被識別為原始圖像與其模糊版本之間的差異。這些細節在縮放步驟後被添加回原始圖像:

增強圖像 = 原始 + 數量 *(原始 - 模糊)

將此濾鏡單獨應用於多個顏色層時,可能會發生顏色滲色。通過僅在適當的色彩空間(例如 HSV、HSL、YUV 或 YCbCr)中處理亮度/明度/強度通道,可以獲得更視覺上令人愉悅的結果。

大多數介紹性數字圖像處理書籍中都說明了銳化遮罩。此實現基於 [1]

參考

1

Maria Petrou, Costas Petrou “Image Processing: The Fundamentals”, (2010), ed ii., page 357, ISBN 13: 9781119994398 DOI:10.1002/9781119994398

2

Wikipedia. Unsharp masking https://en.wikipedia.org/wiki/Unsharp_masking

例子

>>> array = np.ones(shape=(5,5), dtype=np.uint8)*100
>>> array[2,2] = 120
>>> array
array([[100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100],
       [100, 100, 120, 100, 100],
       [100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100]], dtype=uint8)
>>> np.around(unsharp_mask(array, radius=0.5, amount=2),2)
array([[0.39, 0.39, 0.39, 0.39, 0.39],
       [0.39, 0.39, 0.38, 0.39, 0.39],
       [0.39, 0.38, 0.53, 0.38, 0.39],
       [0.39, 0.39, 0.38, 0.39, 0.39],
       [0.39, 0.39, 0.39, 0.39, 0.39]])
>>> array = np.ones(shape=(5,5), dtype=np.int8)*100
>>> array[2,2] = 127
>>> np.around(unsharp_mask(array, radius=0.5, amount=2),2)
array([[0.79, 0.79, 0.79, 0.79, 0.79],
       [0.79, 0.78, 0.75, 0.78, 0.79],
       [0.79, 0.75, 1.  , 0.75, 0.79],
       [0.79, 0.78, 0.75, 0.78, 0.79],
       [0.79, 0.79, 0.79, 0.79, 0.79]])
>>> np.around(unsharp_mask(array, radius=0.5, amount=2, preserve_range=True), 2)
array([[100.  , 100.  ,  99.99, 100.  , 100.  ],
       [100.  ,  99.39,  95.48,  99.39, 100.  ],
       [ 99.99,  95.48, 147.59,  95.48,  99.99],
       [100.  ,  99.39,  95.48,  99.39, 100.  ],
       [100.  , 100.  ,  99.99, 100.  , 100.  ]])

相關用法


注:本文由純淨天空篩選整理自scikit-image.org大神的英文原創作品 skimage.filters.unsharp_mask。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。