前回のブログ投稿 で、画像にぼかし効果を追加する方法を示しました。今日は、画像のノイズ除去と平滑化に一般的に使用されるメジアン フィルターとウィーナー フィルターの適用方法を紹介します。そこで、Java でプログラムを使用してメディアン ファイラーとウィーナー ファイラーをイメージに適用する方法を見てみましょう。
- Median および Wiener 画像フィルターを適用する Java API
- Java で画像にメディアン フィルターを適用する
- イメージへの Gauss Wiener フィルターの適用
- 画像のモーション ウィーナー フィルタリング
Median および Wiener 画像フィルターを適用する Java API - 無料ダウンロード
画像にメディアン フィルターとウィナー フィルターを適用するには、Aspose.Imaging for Java を使用します。 Java アプリケーション内から画像を操作するための強力な画像編集 API です。 API を ダウンロード するか、次の Maven 構成を使用してインストールできます。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>22.9</version>
</dependency>
Java で画像にメディアン フィルターを適用する
メディアン フィルターは非線形デジタル フィルター処理手法であり、イメージのノイズを除去する一般的な方法です。以下は、Java で画像にメディアン フィルターを適用する手順です。
- まず、Image.load() メソッドを使用して画像を読み込みます。
- 次に、イメージを RasterImage 型にキャストします。
- MedianFilterOptions クラスのインスタンスを作成し、長方形のサイズで初期化します。
- RasterImage.filter(Rectangle, MedianFilterOptions) メソッドを使用してメディアン フィルターを適用します。
- 最後に、RasterImage.save() メソッドを使用して結果の画像を保存します。
次のコード サンプルは、Java でメディアン フィルターを画像に適用する方法を示しています。
// ノイズの多い画像を読み込む
Image image = Image.load("jack.jpg");
// 画像を RasterImage にキャストする
RasterImage rasterImage = (RasterImage) image;
if (rasterImage == null) {
return;
}
// MedianFilterOptions クラスのインスタンスを作成し、サイズを設定します。
MedianFilterOptions options = new MedianFilterOptions(4);
// MedianFilterOptions フィルターを RasterImage オブジェクトに適用します。
rasterImage.filter(image.getBounds(), options);
// 結果の画像を保存します
image.save("Jac_median_denoise.jpg");
以下は、メディアン フィルターを適用する前後の画像です。
Java で画像に Gauss Wiener フィルターを適用する
Gauss wiener は、付加的なノイズとぼかしを最小限に抑えることで、画像のグレーディングに一般的に使用されるもう 1 つの方法です。以下は、Java で画像に gauss wiener フィルターを適用する手順です。
- まず、Image.load() メソッドを使用して画像を読み込みます。
- 次に、イメージを RasterImage 型にキャストします。
- GaussWienerFilterOptions クラスのインスタンスを作成し、半径のサイズと滑らかな値で初期化します。
- (オプション) グレースケール イメージを取得するには、GaussWienerFilterOptions.setGrayscale(true) メソッドを使用します。
- RasterImage.filter(Rectangle, GaussWienerFilterOptions) メソッドを使用して gauss wiener フィルタを適用します。
- 最後に、RasterImage.save() メソッドを使用して結果の画像を保存します。
次のコード サンプルは、Java で画像に gauss wiener フィルターを適用する方法を示しています。
// 画像を読み込む
Image image = Image.load("jack.jpg");
// 画像を RasterImage にキャストする
RasterImage rasterImage = (RasterImage) image;
if (rasterImage == null) {
return;
}
// GaussWienerFilterOptions クラスのインスタンスを作成し、半径のサイズと滑らかな値を設定します。
GaussWienerFilterOptions options = new GaussWienerFilterOptions(12, 3);
options.setGrayscale(true);
// RasterImage オブジェクトに GaussWienerFilterOptions フィルタを適用します。
rasterImage.filter(image.getBounds(), options);
// 結果の画像を保存します
image.save("Jac_gauss_weiner.jpg");
以下は、グレースケール オプションで gauss wiener フィルターを適用する前後の画像です。
以下は、グレースケールなしで gauss wiener フィルターを適用する前後の画像です。
Java でモーション ウィーナー フィルターを画像に適用する
モーション ウィナー フィルターは、移動するオブジェクトによって生成される画像のブレを除去するために使用されます。 Java でモーション ウィーナー フィルターを画像に適用する手順は次のとおりです。
- まず、Image.load() メソッドを使用して画像を読み込みます。
- 次に、イメージを RasterImage 型にキャストします。
- MotionWienerFilterOptions クラスのインスタンスを作成し、長さ、滑らかな値、および角度で初期化します。
- RasterImage.filter(Rectangle, MotionWienerFilterOptions) メソッドを使用してモーション ウィーナー フィルターを適用します。
- 最後に、RasterImage.save() メソッドを使用して結果の画像を保存します。
次のコード サンプルは、Java でモーション ウィーナー フィルターを画像に適用する方法を示しています。
// 画像を読み込む
Image image = Image.load("jack.jpg");
// 画像を RasterImage にキャストする
RasterImage rasterImage = (RasterImage) image;
if (rasterImage == null) {
return;
}
// MotionWienerFilterOptions クラスのインスタンスを作成し、長さ、スムーズ値、および角度を設定します。
MotionWienerFilterOptions options = new MotionWienerFilterOptions(10, 2, 10);
//options.setGrayscale(true);
// MotionWienerFilterOptions フィルターを RasterImage オブジェクトに適用します。
rasterImage.filter(image.getBounds(), options);
// 結果の画像を保存します
image.save("Jac_motion_weiner.jpg");
Java Median および Wiener Image Filtering API - 無料ライセンスを取得
無料の一時ライセンスを取得 し、評価制限なしで画像にメディアン フィルターとウィーナー フィルターを適用できます。
結論
この記事では、Java でメディアン フィルターとウィーナー フィルターを画像に適用する方法を学習しました。さらに、画像内の移動オブジェクトのノイズを低減する方法についても説明しました。これらの機能を Java アプリケーションで簡単に使用して、画像編集機能を統合できます。
続きを読む
ドキュメント を使用して、Java 画像処理 API について詳しく調べることができます。また、フォーラム を通じて質問を共有することもできます。