
- Mahotas 教程
- Mahotas - 首頁
- Mahotas - 簡介
- Mahotas - 計算機視覺
- Mahotas - 歷史
- Mahotas - 特性
- Mahotas - 安裝
- Mahotas 影像處理
- Mahotas - 影像處理
- Mahotas - 載入影像
- Mahotas - 載入灰度影像
- Mahotas - 顯示影像
- Mahotas - 顯示影像形狀
- Mahotas - 儲存影像
- Mahotas - 影像質心
- Mahotas - 影像卷積
- Mahotas - 建立RGB影像
- Mahotas - 影像尤拉數
- Mahotas - 影像中零的比例
- Mahotas - 獲取影像矩
- Mahotas - 影像區域性最大值
- Mahotas - 影像橢圓軸
- Mahotas - 影像RGB拉伸
- Mahotas 顏色空間轉換
- Mahotas - 顏色空間轉換
- Mahotas - RGB到灰度轉換
- Mahotas - RGB到LAB轉換
- Mahotas - RGB到褐色轉換
- Mahotas - RGB到XYZ轉換
- Mahotas - XYZ到LAB轉換
- Mahotas - XYZ到RGB轉換
- Mahotas - 增加伽馬校正
- Mahotas - 拉伸伽馬校正
- Mahotas 標籤影像函式
- Mahotas - 標籤影像函式
- Mahotas - 影像標記
- Mahotas - 濾波區域
- Mahotas - 邊界畫素
- Mahotas - 形態學運算
- Mahotas - 形態學運算元
- Mahotas - 查詢影像均值
- Mahotas - 裁剪影像
- Mahotas - 影像偏心率
- Mahotas - 影像疊加
- Mahotas - 影像圓度
- Mahotas - 影像縮放
- Mahotas - 影像直方圖
- Mahotas - 影像膨脹
- Mahotas - 影像腐蝕
- Mahotas - 分水嶺演算法
- Mahotas - 影像開運算
- Mahotas - 影像閉運算
- Mahotas - 填充影像空洞
- Mahotas - 條件膨脹影像
- Mahotas - 條件腐蝕影像
- Mahotas - 影像條件分水嶺演算法
- Mahotas - 影像區域性最小值
- Mahotas - 影像區域最大值
- Mahotas - 影像區域最小值
- Mahotas - 高階概念
- Mahotas - 影像閾值化
- Mahotas - 設定閾值
- Mahotas - 軟閾值
- Mahotas - Bernsen區域性閾值化
- Mahotas - 小波變換
- 製作影像小波中心
- Mahotas - 距離變換
- Mahotas - 多邊形工具
- Mahotas - 區域性二值模式
- 閾值鄰域統計
- Mahotas - Haralick特徵
- 標記區域的權重
- Mahotas - Zernike特徵
- Mahotas - Zernike矩
- Mahotas - 排序濾波器
- Mahotas - 二維拉普拉斯濾波器
- Mahotas - 多數濾波器
- Mahotas - 均值濾波器
- Mahotas - 中值濾波器
- Mahotas - Otsu方法
- Mahotas - 高斯濾波
- Mahotas - Hit & Miss變換
- Mahotas - 標記最大值陣列
- Mahotas - 影像平均值
- Mahotas - SURF密集點
- Mahotas - SURF積分圖
- Mahotas - Haar變換
- 突出顯示影像最大值
- 計算線性二值模式
- 獲取標籤邊界
- 反轉Haar變換
- Riddler-Calvard方法
- 標記區域的大小
- Mahotas - 模板匹配
- 加速魯棒特徵
- 去除帶邊框的標記
- Mahotas - Daubechies小波
- Mahotas - Sobel邊緣檢測
Mahotas - 高斯濾波
高斯濾波是一種用於模糊或平滑影像的技術。它可以減少影像噪聲並軟化銳利邊緣。
想象一下你的影像是一個由許多小點組成的網格,每個點代表一個畫素。高斯濾波透過獲取每個畫素並根據周圍畫素調整其值來工作。
它計算其鄰域中畫素值的加權平均值,對較近的畫素給予更多重視,對較遠的畫素給予較少重視。
透過對影像中每個畫素重複此過程,高斯濾波器透過平滑不同區域之間的急劇過渡和減少噪聲來模糊影像。
濾波器的大小決定了模糊的程度。較大的濾波器尺寸意味著考慮的區域更廣,從而導致更明顯的模糊。
簡單來說,高斯濾波透過平均附近的畫素值使影像看起來更平滑,對較近的畫素給予更多重視,對較遠的畫素給予較少重視。這有助於減少噪聲並使影像不那麼銳利。
Mahotas中的高斯濾波
在Mahotas中,我們可以使用mahotas.gaussian_filter()函式對影像執行高斯濾波。此函式透過使用稱為高斯核的特殊矩陣來對影像應用模糊效果。
高斯核是一個特殊的矩陣,其數字以特定方式排列。核中的每個數字代表一個權重。
將核放置在影像中的每個畫素上,並且相鄰畫素的值與其在核中的相應權重相乘。
然後將相乘的值相加,並將其賦值為中心畫素的新值。對影像中的每個畫素重複此過程,從而產生模糊的影像,其中減少了銳利細節和噪聲。
mahotas.gaussian_filter()函式
mahotas.gaussian_filter()函式以灰度影像作為輸入,並返回影像的模糊版本作為輸出。
模糊的程度由sigma值決定。sigma值越高,應用於輸出影像的模糊程度就越大。
語法
以下是mahotas中gaussian_filter()函式的基本語法:
mahotas.gaussian_filter(array, sigma, order=0, mode='reflect', cval=0., out={np.empty_like(array)})
其中:
array - 輸入影像。
sigma - 決定高斯核的標準差。
order (可選) - 指定高斯濾波器的階數。其值可以是0、1、2或3(預設為0)。
mode (可選) - 指定如何處理邊界(預設為'reflect')。
cval (可選) - 當mode為'constant'時應用的填充值(預設為0)。
out (可選) - 指定儲存輸出影像的位置(預設為與array相同大小的陣列)。
示例
在下面的示例中,我們使用mh.gaussian_filter()函式對影像應用高斯濾波。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('tree.tiff') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying gaussian filtering gauss_filter = mh.gaussian_filter(image, 4) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].set_axis_off() # Displaying the gaussian filtered image axes[1].imshow(gauss_filter) axes[1].set_title('Gaussian Filtered Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
輸出
以下是上述程式碼的輸出:

不同階數的濾波
我們可以對影像進行不同階數的高斯濾波。高斯濾波中的階數決定了應用於影像的平滑度(模糊度)。
階數越高,應用於影像的平滑效果就越大。
處理非常嘈雜的影像時,較高的階數很有用。但是,較高的階數也會增加處理時間,因為濾波器會多次應用。
0階應用高斯濾波器一次,1、2或3階分別應用高斯濾波器兩次、三次和四次。
在mahotas中,要進行不同階數的高斯濾波,我們將0以外的任何值作為order引數傳遞給gaussian_filter()函式。
示例
在下面提到的示例中,我們對影像應用不同階數的高斯濾波。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('sea.bmp') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying gaussian filtering gauss_filter = mh.gaussian_filter(image, 3, 1) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].set_axis_off() # Displaying the gaussian filtered image axes[1].imshow(gauss_filter) axes[1].set_title('Gaussian Filtered Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
輸出
上述程式碼的輸出如下:

'Mirror'模式下的濾波
將濾波器應用於影像時,確定如何處理影像的邊界非常重要。“映象”模式是一種常見的方法,它透過映象邊界處的影像內容來處理邊界畫素。
這意味著影像邊界之外的值是透過映象影像內最近的畫素獲得的。這是透過沿邊緣映象現有畫素來完成的。
這種映象技術確保了實際影像和映象影像之間平滑的過渡,從而產生更好的連續性。
示例
在這裡,我們使用“映象”模式對影像應用高斯濾波。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('sun.png') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying gaussian filtering gauss_filter = mh.gaussian_filter(image, 3, 0, mode='mirror') # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].set_axis_off() # Displaying the gaussian filtered image axes[1].imshow(gauss_filter) axes[1].set_title('Gaussian Filtered Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
輸出
執行上述程式碼後,我們將獲得以下輸出:
