Golang を使用して画像のカラー ヒストグラムと二値化処理を実行する方法
デジタル画像処理の普及に伴い、画像処理と分析もホットなトピックになっています。コンピュータビジョン。その中でも、カラーヒストグラムと二値化は一般的で重要な画像処理方法です。この記事では、Golangを使って画像のカラーヒストグラムや二値化処理を行う方法とコード例を紹介します。
カラー ヒストグラムは、画像内のピクセルの色の頻度の統計です。ヒストグラム分析は、画像強調、画像検索、画像分類などのアプリケーションで使用できます。 Golang を使用してカラー ヒストグラムを計算するサンプル コードを次に示します。
package main import ( "fmt" "image" "image/color" "log" "os" ) func main() { imgFile, err := os.Open("test.jpg") // 读取图像文件 if err != nil { log.Fatal(err) } defer imgFile.Close() img, _, err := image.Decode(imgFile) // 解码图像 if err != nil { log.Fatal(err) } bounds := img.Bounds() histogram := make(map[color.Color]int) // 创建颜色直方图 for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { c := img.At(x, y) histogram[c]++ } } for c, count := range histogram { fmt.Printf("颜色: %v,频率: %d ", c, count) } }
上記のコードは、まず画像ファイルを開いてデコードし、次にカラー ヒストグラムを作成します。各ピクセルを走査し、色の出現頻度をカウントすることにより、最終的に画像の色のヒストグラムが取得されます。ここでは、Golang 公式ライブラリ image
の image.Decode
関数を直接使用して画像をデコードしていますが、必要に応じて他の画像処理ライブラリを選択することもできます。
二値化とは、画像を 2 色のみ (通常は白と黒) の画像に変換することです。このプロセスにより、複雑な画像を簡素化し、画像内の重要な情報を抽出することもできます。 Golang を使用して画像を 2 値化するサンプル コードを次に示します。
package main import ( "image" "image/color" "log" "os" ) func main() { imgFile, err := os.Open("test.jpg") // 读取图像文件 if err != nil { log.Fatal(err) } defer imgFile.Close() img, _, err := image.Decode(imgFile) // 解码图像 if err != nil { log.Fatal(err) } bounds := img.Bounds() binaryImg := image.NewGray(bounds) // 创建一个新的灰度图像 for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { c := img.At(x, y) gray := color.GrayModel.Convert(c).(color.Gray) if gray.Y >= 128 { binaryImg.SetGray(x, y, color.White) // 大于等于128的像素点设为白色 } else { binaryImg.SetGray(x, y, color.Black) // 小于128的像素点设为黑色 } } } binaryFile, err := os.Create("binary.jpg") // 创建输出文件 if err != nil { log.Fatal(err) } defer binaryFile.Close() err = jpeg.Encode(binaryFile, binaryImg, &jpeg.Options{Quality: 100}) // 编码二值化图像 if err != nil { log.Fatal(err) } }
上記のコードは、まず画像ファイルを開いてデコードし、次に新しいグレースケール画像を作成します。各ピクセルを横断することにより、ピクセルのグレー値が設定されたしきい値と比較され、しきい値に基づいて黒または白が選択されます。最後に、二値化された画像がファイルに保存されます。同様に、ここでは Golang 公式ライブラリ image
の image.Decode
関数を使用して画像をデコードしていますが、必要に応じて他の画像処理ライブラリを選択することもできます。
上記の 2 つの例を通じて、Golang を使用して画像のカラー ヒストグラムと 2 値化処理を簡単に実行できます。これらの画像処理方法は、コンピューター ビジョンや画像解析の分野で広く使用されており、画像データをより深く理解し、処理するのに役立ちます。同時に、Golang は豊富な画像処理ライブラリと関数を提供しており、開発作業に大きな利便性をもたらします。
以上がGolangを使って画像のカラーヒストグラムと二値化処理を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。