Golang の画像操作: 画像のしきい値を設定してノイズを除去する方法を学びます
Golang 画像操作: 画像のしきい値処理とノイズ除去の方法を学ぶ
はじめに
画像処理とコンピューター ビジョンの分野では、画像のしきい値処理とノイズ除去が一般的です。処理操作。この記事では、Golang を使用して画像のしきい値を設定し、ノイズを除去する方法と、対応するコード例を紹介します。
- しきい値
しきい値は、カラーまたはグレースケール イメージを白黒イメージに変換するための一般的な処理方法です。この方法では、画像ピクセルの輝度値を指定されたしきい値と比較し、ピクセル値を 2 つのカテゴリに分割します。しきい値を超えるピクセルは白、しきい値を下回るピクセルは黒です。
まず、Golang の画像処理パッケージ (github.com/disintegration/imaging
) をインストールする必要があります。次のコマンドを使用してインストールします。
go get -u github.com/disintegration/imaging
Next 、画像のしきい値処理を実装するコードを書くことができます:
package main import ( "image" "image/color" "image/jpeg" "log" "os" "github.com/disintegration/imaging" ) func main() { // 打开图像文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图像 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 阈值化处理 threshold := 128 bounds := img.Bounds() grayImage := image.NewGray(bounds) for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { originalColor := img.At(x, y) red, green, blue, _ := originalColor.RGBA() grayValue := (int(red) + int(green) + int(blue)) / 3 var colorValue uint8 if grayValue > threshold { colorValue = 255 } else { colorValue = 0 } grayImage.Set(x, y, color.Gray{colorValue}) } } // 保存阈值化后的图像 outputFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outputFile.Close() jpeg.Encode(outputFile, grayImage, nil) }
上記のコードは、まず input.jpg
という名前の画像ファイルを開き、jpeg.Decode
Function を使用して、画像。次に、新しいグレースケール画像を作成して、しきい値処理した結果を保存します。次に、画像の各ピクセルを反復処理し、そのグレースケール値を計算し、しきい値に応じてピクセルを黒または白に設定します。最後に、jpeg.Encode
関数を使用して、結果を output.jpg
として保存します。
- ノイズ除去
画像のノイズ除去とは、画像処理中に特定のアルゴリズムと技術を通じて画像内のノイズを低減または除去するプロセスを指します。一般的な画像ノイズ除去アルゴリズムには、メディアン フィルタリング、ガウス フィルタリングなどが含まれます。
Golang の draw
パッケージを使用して、単純なメディアン フィルタリング アルゴリズムを実装できます。
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func medianFilter(img image.Image, size int) image.Image { bounds := img.Bounds() result := image.NewRGBA(bounds) for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { mr, mg, mb := 0, 0, 0 count := 0 for dy := -size; dy <= size; dy++ { for dx := -size; dx <= size; dx++ { nx := x + dx ny := y + dy if nx >= bounds.Min.X && nx < bounds.Max.X && ny >= bounds.Min.Y && ny < bounds.Max.Y { r, g, b, _ := img.At(nx, ny).RGBA() mr += int(r) mg += int(g) mb += int(b) count++ } } } rr := uint8(mr / count) gg := uint8(mg / count) bb := uint8(mb / count) result.Set(x, y, color.RGBA{rr, gg, bb, 255}) } } return result } func main() { // 打开图像文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图像 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 中值滤波处理 filtered := medianFilter(img, 1) // 保存去噪后的图像 outputFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outputFile.Close() jpeg.Encode(outputFile, filtered, nil) }
上記のコードでは、medianFilter ## を定義します。 # 単純なメディアン フィルタリング アルゴリズムを実装する関数。この関数では、
size パラメーターを使用してフィルター ウィンドウのサイズを指定します。画像の各ピクセルをループし、ウィンドウ内のピクセルに基づいてそのピクセルの中央値を計算し、結果を新しく作成した画像に保存します。最後に、
jpeg.Encode 関数を使用して、結果を
output.jpg として保存します。
この記事では、Golang を使用して画像のしきい値を設定し、ノイズを除去する方法を紹介します。しきい値を使用すると、後続の処理のためにカラーまたはグレースケール イメージを白黒イメージに変換できます。ノイズ除去により、画像内のノイズを低減または除去し、画質を向上させることができます。サンプル コードを通じて、これらの画像処理技術をより深く理解し、適用することができます。この記事が画像処理分野の学習と実践に役立つことを願っています。
以上がGolang の画像操作: 画像のしきい値を設定してノイズを除去する方法を学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...
