


Manipulasi imej Golang: pelajari cara ambang dan denoise imej
Pengendalian Imej Golang: Ketahui cara ambang dan denoise imej
Pengenalan
Dalam bidang pemprosesan imej dan penglihatan komputer, ambang dan denoising adalah operasi pemprosesan imej biasa. Artikel ini akan memperkenalkan cara menggunakan Golang untuk mengambang dan mengecilkan imej serta memberikan contoh kod yang sepadan.
- Ambang
Ambang ialah kaedah pemprosesan biasa untuk menukar warna atau imej skala kelabu kepada imej hitam putih. Kaedah ini membandingkan nilai kecerahan piksel imej dengan ambang tertentu dan membahagikan nilai piksel kepada dua kategori: piksel di atas ambang berwarna putih dan piksel di bawah ambang adalah hitam.
Mula-mula, kita perlu memasang pakej pemprosesan imej Golang - github.com/disintegration/imaging
, pasangkannya melalui arahan berikut: github.com/disintegration/imaging
,通过以下命令进行安装:
go get -u github.com/disintegration/imaging
接下来,我们可以编写代码来实现图像的阈值化处理:
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
函数对图像进行解码。然后,我们创建了一个新的灰度图像用于保存阈值化处理后的结果。接下来,我们遍历图像的每个像素,计算其灰度值,并根据阈值的设定将像素设置为黑色或白色。最后,我们使用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
rrreee
rrreee
Kod di atas mula-mula membuka fail imej bernama input.jpg
dan menggunakan fungsi jpeg.Decode
untuk menyahkod imej. Kemudian, kami mencipta imej skala kelabu baharu untuk menyimpan hasil ambang. Seterusnya, kami mengulangi setiap piksel imej, mengira nilai skala kelabunya dan menetapkan piksel kepada hitam atau putih bergantung pada ambang. Akhir sekali, kami menggunakan fungsi jpeg.Encode
untuk menyimpan hasil sebagai output.jpg
.
- 🎜Denoising🎜Denoising imej merujuk kepada proses mengurangkan atau menghapuskan hingar dalam imej melalui algoritma dan teknik tertentu semasa pemprosesan imej. Algoritma denoising imej biasa termasuk penapisan median, penapisan Gaussian, dsb. 🎜🎜🎜Kami boleh menggunakan pakej
draw
Golang untuk melaksanakan algoritma penapisan median mudah: 🎜rrreee🎜Dalam kod di atas, kami mentakrifkan fungsi medianFilter
untuk melaksanakan penapis Median ringkas algoritma. Dalam fungsi, kami menggunakan parameter size
untuk menentukan saiz tetingkap penapis. Kami melingkari setiap piksel imej dan mengira nilai median piksel tersebut berdasarkan piksel dalam tetingkap dan menyimpan hasilnya pada imej yang baru dibuat. Akhir sekali, kami menggunakan fungsi jpeg.Encode
untuk menyimpan hasil sebagai output.jpg
. 🎜🎜Ringkasan🎜Artikel ini memperkenalkan cara menggunakan Golang untuk ambang dan denoise imej. Ambang boleh menukar imej berwarna atau skala kelabu kepada imej hitam dan putih untuk pemprosesan seterusnya. Denoising boleh mengurangkan atau menghapuskan hingar dalam imej dan meningkatkan kualiti imej. Melalui kod sampel, kita boleh lebih memahami dan menggunakan teknik pemprosesan imej ini. Saya harap artikel ini dapat membantu kajian dan latihan anda dalam bidang pemprosesan imej. 🎜Atas ialah kandungan terperinci Manipulasi imej Golang: pelajari cara ambang dan denoise imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

C lebih sesuai untuk senario di mana kawalan langsung sumber perkakasan dan pengoptimuman prestasi tinggi diperlukan, sementara Golang lebih sesuai untuk senario di mana pembangunan pesat dan pemprosesan konkurensi tinggi diperlukan. Kelebihan 1.C terletak pada ciri-ciri perkakasan dan keupayaan pengoptimuman yang tinggi, yang sesuai untuk keperluan berprestasi tinggi seperti pembangunan permainan. 2. Kelebihan Golang terletak pada sintaks ringkas dan sokongan konvensional semulajadi, yang sesuai untuk pembangunan perkhidmatan konvensional yang tinggi.

Golang cemerlang dalam aplikasi praktikal dan terkenal dengan kesederhanaan, kecekapan dan kesesuaiannya. 1) Pengaturcaraan serentak dilaksanakan melalui goroutine dan saluran, 2) Kod fleksibel ditulis menggunakan antara muka dan polimorfisme, 3) memudahkan pengaturcaraan rangkaian dengan pakej bersih/HTTP, 4) Membina crawler serentak yang cekap, 5) Debugging dan mengoptimumkan melalui alat dan amalan terbaik.

Ciri -ciri teras GO termasuk pengumpulan sampah, penyambungan statik dan sokongan konvensional. 1. Model keseragaman bahasa GO menyedari pengaturcaraan serentak yang cekap melalui goroutine dan saluran. 2. Antara muka dan polimorfisme dilaksanakan melalui kaedah antara muka, supaya jenis yang berbeza dapat diproses secara bersatu. 3. Penggunaan asas menunjukkan kecekapan definisi fungsi dan panggilan. 4. Dalam penggunaan lanjutan, kepingan memberikan fungsi saiz semula dinamik yang kuat. 5. Kesilapan umum seperti keadaan kaum dapat dikesan dan diselesaikan melalui perlumbaan getest. 6. Pengoptimuman prestasi menggunakan objek melalui sync.pool untuk mengurangkan tekanan pengumpulan sampah.

Pergi bahasa berfungsi dengan baik dalam membina sistem yang cekap dan berskala. Kelebihannya termasuk: 1. Prestasi Tinggi: Disusun ke dalam Kod Mesin, Kelajuan Berjalan Cepat; 2. Pengaturcaraan serentak: Memudahkan multitasking melalui goroutine dan saluran; 3. Kesederhanaan: sintaks ringkas, mengurangkan kos pembelajaran dan penyelenggaraan; 4. Cross-Platform: Menyokong kompilasi silang platform, penggunaan mudah.

Keliru mengenai penyortiran hasil pertanyaan SQL. Dalam proses pembelajaran SQL, anda sering menghadapi beberapa masalah yang mengelirukan. Baru-baru ini, penulis membaca "Asas Mick-SQL" ...

Hubungan antara konvergensi stack teknologi dan pemilihan teknologi dalam pembangunan perisian, pemilihan dan pengurusan susunan teknologi adalah isu yang sangat kritikal. Baru -baru ini, beberapa pembaca telah mencadangkan ...

Golang ...

Bagaimana membandingkan dan mengendalikan tiga struktur dalam bahasa Go. Dalam pengaturcaraan GO, kadang -kadang perlu untuk membandingkan perbezaan antara dua struktur dan menggunakan perbezaan ini kepada ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa