Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah Golang untuk mencapai denoising imej dan pengurangan hingar

Kaedah Golang untuk mencapai denoising imej dan pengurangan hingar

WBOY
WBOYasal
2023-08-18 12:03:291002semak imbas

Kaedah Golang untuk mencapai denoising imej dan pengurangan hingar

Kaedah Golang untuk mencapai pengurangan hingar dan bunyi

Penyah bunyi dan pengurangan hingar adalah masalah biasa dalam pemprosesan imej. Golang, sebagai bahasa pengaturcaraan yang cekap dan serentak, boleh melaksanakan tugas pemprosesan imej ini. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan denoising imej dan pengurangan hingar serta memberikan contoh kod yang sepadan. . Penapis yang biasa digunakan termasuk penapis median, penapis min, dsb. Di Golang, kami boleh menggunakan pustaka pemprosesan imej github.com/nfnt/resize dan github.com/disintegration/imaging untuk melaksanakan penapisan imej.

Gunakan penapis median untuk denoise
    Penuras median ialah kaedah denosing yang biasa digunakan Prinsipnya adalah untuk menggantikan nilai piksel semasa dengan nilai median piksel jiran di sekeliling piksel. Berikut ialah contoh kod menggunakan Golang untuk melaksanakan denoising penapis median:
import (
    "image"
    _ "image/jpeg"
    "os"
    "github.com/disintegration/imaging"
)

func medianFilter(imgPath string) image.Image {
    // 打开原始图片
    file, err := os.Open(imgPath)
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 使用中值滤波器处理图片
    filteredImg := imaging.Median(img, 3)

    return filteredImg
}

func main() {
    // 原始图片路径
    imgPath := "original.jpg"

    // 处理图片
    filteredImg := medianFilter(imgPath)

    // 保存处理后的图片
    err := imaging.Save(filteredImg, "filtered.jpg")
    if err != nil {
        panic(err)
    }
}
  • Dalam kod di atas, kami mula-mula menggunakan fungsi os.Open untuk membuka imej asal, dan kemudian gunakan Fungsi image.Decode menyahkod imej untuk mendapatkan objek image.Image. Seterusnya, kami menggunakan penapis median untuk memproses imej, di mana parameter kedua fungsi pengimejan.Median mewakili saiz penapis, di sini kami menetapkannya kepada 3. Akhir sekali, gunakan fungsi imaging.Save untuk menyimpan imej yang diproses ke cakera.
      github.com/nfnt/resizegithub.com/disintegration/imaging来实现对图片的滤波处理。
  • 使用中值滤波器去噪
    中值滤波器是一种常用的去噪方法,它的原理是用像素点周围的邻近像素的中值来代替当前像素的值。下面是使用Golang实现中值滤波器去噪的代码示例:
  • import (
        "image"
        _ "image/jpeg"
        "os"
        "github.com/disintegration/imaging"
    )
    
    func meanFilter(imgPath string) image.Image {
        // 打开原始图片
        file, err := os.Open(imgPath)
        if err != nil {
            panic(err)
        }
        defer file.Close()
    
        // 解码图片
        img, _, err := image.Decode(file)
        if err != nil {
            panic(err)
        }
    
        // 使用均值滤波器处理图片
        filteredImg := imaging.Blur(img, 3)
    
        return filteredImg
    }
    
    func main() {
        // 原始图片路径
        imgPath := "original.jpg"
    
        // 处理图片
        filteredImg := meanFilter(imgPath)
    
        // 保存处理后的图片
        err := imaging.Save(filteredImg, "filtered.jpg")
        if err != nil {
            panic(err)
        }
    }

    在上述代码中,我们首先使用os.Open函数打开原始图片,然后使用image.Decode函数解码图片获取image.Image对象。接着,我们使用中值滤波器对图片进行处理,其中imaging.Median函数的第二个参数表示滤波器的大小,这里我们设置为3。最后,使用imaging.Save函数将处理后的图片保存到磁盘。

    1. 使用均值滤波器降噪
      均值滤波器是另一种常用的降噪方法,它的原理是用像素点周围的邻近像素的平均值来代替当前像素的值。下面是使用Golang实现均值滤波器降噪的代码示例:
    rrreee

    在上述代码中,我们使用imaging.BlurGunakan penapis min untuk mengurangkan hingar

    Penuras min ialah satu lagi kaedah pengurangan hingar yang biasa digunakan Prinsipnya adalah untuk menggantikan nilai piksel semasa dengan nilai purata piksel jiran di sekeliling piksel . Berikut ialah contoh kod menggunakan Golang untuk melaksanakan pengurangan hingar penapis min: rrreee

    Dalam kod di atas, kami menggunakan fungsi imaging.Blur untuk melaksanakan pengurangan hingar penapis min Kesan. Begitu juga, saiz penapis boleh dikawal dengan melaraskan parameter kedua.

    🎜Melalui contoh kod di atas, kami telah melaksanakan kaedah denoising imej dan pengurangan hingar berdasarkan penapis median dan penapis min. Sudah tentu, sebagai tambahan kepada penapis median dan penapis min, terdapat penapis lain yang lebih kompleks yang boleh dipilih dan dilaksanakan mengikut keperluan sebenar. Pada masa yang sama, Golang menyediakan keupayaan serentak yang berkuasa, yang boleh mengoptimumkan lagi kecekapan pemprosesan imej. Harap artikel ini dapat membantu anda. 🎜

    Atas ialah kandungan terperinci Kaedah Golang untuk mencapai denoising imej dan pengurangan hingar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn