在各種情況下,您必須對圖像進行去噪以提高其視覺質量。當您想要提高圖像的整體清晰度時,這非常有用。此外,去噪還用於在進一步分析(例如識別、分割等)之前對圖像進行預處理。中值濾波器和維納濾波器通常用於對圖像進行去噪和平滑處理。那麼讓我們看看如何在 Python 中對圖像應用中值濾波器和維納濾波器。
應用中值和維納圖像過濾器的 Python 庫
要在圖像上應用中值和維納濾波器,我們將使用 Aspose.Imaging for Python - 一個強大的圖像處理庫,可讓您輕鬆操作圖像。要使用該庫,您可以下載或使用以下命令安裝它。
> pip install aspose-imaging-python-net
在 Python 中對圖像應用中值濾波器
中值濾波器是一種常用的去噪方法,它採用非線性數字濾波技術。以下是在 Python 中將中值濾波器應用於圖像的步驟。
- 首先,使用 Image.load() 方法加載圖像。
- 然後,將圖像轉換為 RasterImage 類型。
- 創建 MedianFilterOptions 類的實例並使用矩形的大小對其進行初始化。
- 使用 RasterImage.filter(Rectangle, MedianFilterOptions) 方法應用中值濾波器。
- 最後,使用 RasterImage.save() 方法保存過濾後的圖像。
以下代碼示例展示瞭如何在 Python 中將中值濾波器應用於圖像。
import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import MedianFilterOptions
import os
if 'TEMPLATE_DIR' in os.environ:
templates_folder = os.environ['TEMPLATE_DIR']
else:
templates_folder = r"C:\Users\USER\Downloads\templates"
delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# 加載有噪聲的圖像
with Image.load(os.path.join(data_dir, "template.gif")) as image:
# 將圖像轉換為 RasterImage
if aspycore.is_assignable(image, RasterImage):
raster_image = aspycore.as_of(image, RasterImage)
# 創建 MedianFilterOptions 類的實例並設置大小,將 MedianFilterOptions 濾鏡應用於 RasterImage 對象並保存結果圖像
options = MedianFilterOptions(4)
raster_image.filter(image.bounds, options)
image.save(os.path.join(data_dir, "result.gif"))
if delete_output:
os.remove(os.path.join(data_dir, "result.gif"))
下圖是應用中值濾波器之前和之後的圖像。
在 Python 中將高斯維納濾波器應用於圖像
高斯維納是另一種常用的增強圖像清晰度和減少噪聲的方法。讓我們看一下在 Python 中將高斯維納濾波器應用於圖像所需的步驟。
- 首先,使用 Image.load() 方法加載圖像。
- 然後,將圖像轉換為 RasterImage 類型。
- 創建 GaussWienerFilterOptions 類的實例並使用半徑大小和平滑值對其進行初始化。
- (可選)要獲取灰度圖像,請將 GaussWienerFilterOptions.grayscale 屬性設置為 true。
- 使用 RasterImage.filter(Rectangle, GaussWienerFilterOptions) 方法應用高斯維納濾波器。
- 最後,使用 RasterImage.save() 方法保存生成的圖像。
以下代碼示例展示瞭如何在 Python 中將高斯維納濾波器應用於圖像。
import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import GaussWienerFilterOptions
import os
if 'TEMPLATE_DIR' in os.environ:
templates_folder = os.environ['TEMPLATE_DIR']
else:
templates_folder = r"C:\Users\USER\Downloads\templates"
delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# 加載圖像
with Image.load(os.path.join(data_dir, "template.jpg")) as image:
# 將圖像轉換為 RasterImage
if aspycore.is_assignable(image, RasterImage):
raster_image = aspycore.as_of(image, RasterImage)
# 創建 GaussWienerFilterOptions 類的實例並設置半徑大小和平滑值。
options = GaussWienerFilterOptions(12, 3)
options.grayscale = True
# 將 MedianFilterOptions 濾鏡應用於 RasterImage 對象並保存結果圖像
raster_image.filter(image.bounds, options)
image.save(os.path.join(data_dir, "result.jpg"))
if delete_output:
os.remove(os.path.join(data_dir, "result.jpg"))
下面是使用灰度選項應用高斯維納濾波器之前和之後的圖像。
以下是應用高斯維納濾波器(未進行灰度化)之前和之後的圖像。
Python 中圖像的運動維納濾波器
運動維納濾波器用於減少運動模糊引起的模糊或退化。這種模糊的發生是由於相機和物體之間的相對運動。以下是在 Python 中將運動維納濾波器應用於圖像的步驟。
- 首先,使用 Image.load() 方法加載圖像。
- 然後,將圖像轉換為 RasterImage 類型。
- 創建 MotionWienerFilterOptions 類的實例並使用長度、平滑值和角度對其進行初始化。
- 使用 RasterImage.filter(Rectangle, MotionWienerFilterOptions) 方法應用運動維納濾波器。
- 最後,使用 RasterImage.save() 方法保存生成的圖像。
以下代碼示例展示瞭如何在 Python 中將運動維納濾波器應用於圖像。
import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import MotionWienerFilterOptions
import os
if 'TEMPLATE_DIR' in os.environ:
templates_folder = os.environ['TEMPLATE_DIR']
else:
templates_folder = r"C:\Users\USER\Downloads\templates"
delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# 加載圖像
with Image.load(os.path.join(data_dir, "template.gif")) as image:
# 將圖像轉換為 RasterImage
if aspycore.is_assignable(image, RasterImage):
raster_image = aspycore.as_of(image, RasterImage)
# 創建 MotionWienerFilterOptions 類的實例並設置長度、平滑值和角度。
options = MotionWienerFilterOptions(50, 9, 90)
options.grayscale = True
# 將 MedianFilterOptions 濾鏡應用於 RasterImage 對象並保存結果圖像
raster_image.filter(image.bounds, options)
image.save(os.path.join(data_dir, "result.gif"))
if delete_output:
os.remove(os.path.join(data_dir, "result.gif"))
免費的 Python 圖像過濾器庫
您可以獲得免費的臨時許可證並將中值和維納濾波器應用於圖像,而不受評估限制。
免費在線圖像編輯應用程序
使用我們的免費的基於網絡的圖像編輯工具 在線編輯您的圖像。該圖像編輯器利用 Aspose.Imaging for Python,不會要求您創建帳戶。
結論
在本文中,您學習瞭如何在 Python 中將中值濾波器和維納濾波器應用於圖像。這些步驟和代碼示例演示瞭如何應用不同類型的濾波器以編程方式對圖像進行去噪。此外,我們還介紹瞭如何使用運動維納濾波器減少圖像中移動物體的噪聲。最後,我們為您提供了一個完全免費的在線圖像編輯應用程序,您無需註冊即可使用它。
您可以使用 文檔 探索有關 Python 圖像處理庫的更多信息。此外,您還可以通過我們的論壇與我們分享您的疑問。