Python でメディアン フィルターとウィーナー フィルターを画像に適用する

さまざまな場合において、視覚的な品質を高めるために画像のノイズを除去する必要があります。これは、画像全体の鮮明さを向上させたい場合に便利です。また、ノイズ除去は、認識やセグメンテーションなどのさらなる分析の前に画像を前処理するために使用されます。メディアン フィルターとウィナー フィルターは、画像のノイズを除去して滑らかにするために一般的に使用されます。それでは、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 クラスのインスタンスを作成してサイズを設定し、RasterImage オブジェクトに MedianFilterOptions フィルターを適用して、結果の画像を保存します
		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 でガウス ウィナー フィルターを画像に適用する

ガウス ウィナーは、画像の明瞭さを高め、ノイズを低減するためによく使用されるもう 1 つの方法です。 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 でモーション Weiner フィルターを画像に適用する

無料の Python 画像フィルター ライブラリ

無料の一時ライセンスを取得して、評価制限なしで画像にメディアン フィルターとウィナー フィルターを適用できます。

無料のオンライン画像編集アプリ

無料のウェブベースの画像編集ツール を使用して、オンラインで画像を編集します。この画像エディターは、Aspose.Imaging for Python を利用しており、アカウントの作成を要求しません。

結論

この記事では、Python で画像にメディアン フィルターとウィナー フィルターを適用する方法を学習しました。この手順とコード サンプルでは、さまざまな種類のフィルターを適用してプログラムで画像のノイズを除去する方法を示しました。さらに、モーション ウィナー フィルターを使用して画像内の移動オブジェクトのノイズを低減する方法についても説明しました。最後に、完全に無料でサインアップせずに使用できるオンライン画像編集アプリを提供しました。

ドキュメント を使用して、Python 画像処理ライブラリについて詳しく調べることができます。また、フォーラム を通じて質問を共有することもできます。

関連項目