Rumah pembangunan bahagian belakang Golang Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej

Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej

Aug 19, 2023 am 09:21 AM
Manipulasi gambar golang (bahasa pengaturcaraan) keseimbangan warna

Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej

Operasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada gambar

Pengenalan: Dalam bidang pemprosesan imej, keseimbangan warna dan penukaran warna adalah salah satu operasi yang biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan keseimbangan warna dan penukaran warna gambar serta memberikan contoh kod yang sepadan.

1. Keseimbangan warna
Imbangan warna merujuk kepada melaraskan keamatan setiap saluran warna dalam imej untuk menjadikan warna keseluruhan imej lebih seragam dan semula jadi. Algoritma imbangan warna yang biasa digunakan termasuk imbangan kecerahan, imbangan putih dan penyamaan histogram.

  1. Imbangan Kecerahan
    Imbangan kecerahan dicapai dengan melaraskan taburan kecerahan imej. Berikut ialah kod contoh mudah untuk mencapai keseimbangan kecerahan:
package main

import (
    "image"
    "image/color"
    "image/png"
    "os"
)

func brightnessBalance(img image.Image) image.Image {
    width := img.Bounds().Dx()
    height := img.Bounds().Dy()

    balanceImg := image.NewRGBA(img.Bounds())

    for y := 0; y < height; y++ {
        for x := 0; x < width; x++ {
            r, g, b, a := img.At(x, y).RGBA()
            r = r * 2
            g = g * 2
            b = b * 2

            balanceImg.Set(x, y, color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)})
        }
    }

    return balanceImg
}

func main() {
    file, err := os.Open("input.png")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    balanceImg := brightnessBalance(img)

    outputFile, err := os.Create("output.png")
    if err != nil {
        panic(err)
    }
    defer outputFile.Close()

    err = png.Encode(outputFile, balanceImg)
    if err != nil {
        panic(err)
    }
}
Salin selepas log masuk

Dalam kod di atas, kami melingkari setiap piksel imej dan mendarabkan nilai saluran merah, hijau dan biru bagi setiap piksel dengan 2. Kecerahan keseluruhan ialah bertambah baik. Dengan memuatkan imej asal dan menyimpan imej yang diproses, kita boleh mendapatkan imej yang seimbang warna.

  1. White balance
    White balance adalah untuk menghapuskan tuangan warna dalam gambar yang disebabkan oleh pencahayaan yang tidak sekata. Berikut ialah kod sampel mudah untuk mencapai imbangan putih:
package main

import (
    "image"
    "image/color"
    "image/png"
    "math"
    "os"
)

func whiteBalance(img image.Image) image.Image {
    width := img.Bounds().Dx()
    height := img.Bounds().Dy()

    whiteBalanceImg := image.NewRGBA(img.Bounds())

    var sumR, sumG, sumB float64
    for y := 0; y < height; y++ {
        for x := 0; x < width; x++ {
            r, g, b, a := img.At(x, y).RGBA()
            sumR += math.Log(float64(r))
            sumG += math.Log(float64(g))
            sumB += math.Log(float64(b))
        }
    }
    avgR := math.Exp(sumR / (float64(width * height)))
    avgG := math.Exp(sumG / (float64(width * height)))
    avgB := math.Exp(sumB / (float64(width * height)))

    for y := 0; y < height; y++ {
        for x := 0; x < width; x++ {
            r, g, b, a := img.At(x, y).RGBA()
            r = uint32(math.Log(float64(r)) * avgR / float64(r))
            g = uint32(math.Log(float64(g)) * avgG / float64(g))
            b = uint32(math.Log(float64(b)) * avgB / float64(b))

            whiteBalanceImg.Set(x, y, color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)})
        }
    }

    return whiteBalanceImg
}

func main() {
    file, err := os.Open("input.png")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    whiteBalanceImg := whiteBalance(img)

    outputFile, err := os.Create("output.png")
    if err != nil {
        panic(err)
    }
    defer outputFile.Close()

    err = png.Encode(outputFile, whiteBalanceImg)
    if err != nil {
        panic(err)
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mengira purata nilai logaritma semua piksel dalam imej dan mendarabkan nilai logaritma setiap piksel dengan purata. Operasi eksponen dilakukan untuk mencapai imbangan putih. Begitu juga, dengan memuatkan imej asal dan menyimpan imej yang diproses, kita boleh mendapatkan imej seimbang putih.

2. Penukaran warna
Penukaran warna merujuk kepada menukar warna dalam satu ruang warna kepada warna dalam ruang warna yang lain. Penukaran warna yang biasa digunakan termasuk RGB kepada HSV dan RGB kepada YUV.

  1. Penukaran RGB ke HSV
    RGB dan HSV ialah dua ruang warna biasa RGB digunakan untuk mewakili tiga komponen warna merah, hijau dan biru, dan HSV digunakan untuk mewakili tiga sifat warna: rona, ketepuan. dan kecerahan.

Berikut ialah contoh kod mudah untuk menukar warna RGB kepada warna HSV:

package main

import (
    "fmt"
    "image/color"
)

func rgbToHsv(r, g, b uint8) (uint16, uint8, uint8) {
    var h, s, v uint16

    max := uint16(r)
    if uint16(g) > max {
        max = uint16(g)
    }
    if uint16(b) > max {
        max = uint16(b)
    }

    min := uint16(r)
    if uint16(g) < min {
        min = uint16(g)
    }
    if uint16(b) < min {
        min = uint16(b)
    }

    v = max
    delta := max - min

    if max != 0 {
        s = uint8(delta) * 255 / uint8(max)
    } else {
        s = 0
    }

    if delta != 0 {
        if max == uint16(r) {
            h = (uint16(g) - uint16(b)) * 60 / delta
            if uint16(g) < uint16(b) {
                h += 360
            }
        } else if max == uint16(g) {
            h = (2 + (uint16(b)-uint16(r))/delta) * 60
        } else {
            h = (4 + (uint16(r)-uint16(g))/delta) * 60
        }
    } else {
        h = 0
    }

    return h, s, uint8(v)
}

func main() {
    r := uint8(255)
    g := uint8(0)
    b := uint8(0)

    h, s, v := rgbToHsv(r, g, b)

    fmt.Printf("RGB(%d, %d, %d) -> HSV(%d, %d, %d)
", r, g, b, h, s, v)
}
Salin selepas log masuk

Dalam kod di atas, kami mengira komponen warna HSV yang sepadan berdasarkan nilai komponen warna RGB melalui satu siri pengiraan. nilai. Kami mengeluarkan warna RGB merah tulen dengan menetapkan nilai komponen RGB kepada nilai maksimum merah, dan mengira warna HSV yang sepadan.

  1. Penukaran RGB ke YUV
    YUV juga merupakan ruang warna biasa, di mana Y mewakili kecerahan dan U dan V mewakili kroma. Berikut ialah contoh kod mudah untuk menukar warna RGB kepada warna YUV:
package main

import (
    "fmt"
    "image/color"
)

func rgbToYuv(r, g, b uint8) (uint8, uint8, uint8) {
    y := uint8(float32(r)*0.299 + float32(g)*0.587 + float32(b)*0.114)
    u := uint8((-float32(r)*0.14713 - float32(g)*0.28886 + float32(b)*0.436 + 128) / 2)
    v := uint8((float32(r)*0.615 + float32(g)*0.51499 - float32(b)*0.10001 + 128) / 2)
    return y, u, v
}

func main() {
    r := uint8(255)
    g := uint8(0)
    b := uint8(0)

    y, u, v := rgbToYuv(r, g, b)

    fmt.Printf("RGB(%d, %d, %d) -> YUV(%d, %d, %d)
", r, g, b, y, u, v)
}
Salin selepas log masuk

Dalam kod di atas, kami mengira nilai komponen warna YUV yang sepadan melalui satu siri pengiraan berdasarkan nilai komponen warna RGB . Begitu juga, kami mengeluarkan warna RGB merah tulen dengan menetapkan nilai komponen RGB kepada nilai maksimum merah, dan mengira warna YUV yang sepadan.

Kesimpulan: Artikel ini memperkenalkan kaedah keseimbangan warna dan penukaran warna imej menggunakan bahasa Go, dan menyediakan contoh kod yang sepadan. Saya berharap pembaca akan mempunyai pemahaman yang lebih mendalam tentang operasi imej Golang melalui artikel ini dan dapat mengaplikasikannya pada projek sebenar.

Atas ialah kandungan terperinci Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Python untuk melakukan pelarasan keseimbangan warna pada gambar Cara menggunakan Python untuk melakukan pelarasan keseimbangan warna pada gambar Aug 17, 2023 am 11:43 AM

Cara menggunakan Python untuk melaraskan keseimbangan warna gambar Pengenalan: Dalam pemprosesan imej, keseimbangan warna adalah operasi biasa. Dengan melaraskan keseimbangan warna imej, anda boleh menukar ton keseluruhan imej untuk menjadikannya lebih sesuai untuk keperluan anda. Artikel ini akan memperkenalkan cara menggunakan bahasa Python untuk melaraskan keseimbangan warna gambar, dan memberikan contoh kod untuk membantu pembaca melaksanakannya dengan cepat. 1. Prinsip imbangan warna Imbangan warna ialah operasi melaraskan keamatan saluran warna yang berbeza dalam imej untuk mencapai kesan warna keseluruhan. Secara umumnya, warna imej ditentukan oleh merah

Manipulasi imej Golang: bagaimana untuk mencerminkan, memutar dan membalikkan imej Manipulasi imej Golang: bagaimana untuk mencerminkan, memutar dan membalikkan imej Aug 25, 2023 pm 10:31 PM

Manipulasi imej Golang: Bagaimana untuk mencerminkan, memutar dan membalikkan imej 1. Pengenalan Pemprosesan imej adalah salah satu keperluan yang sering kita hadapi dalam banyak senario pembangunan. Di Golang, kita boleh menggunakan pakej imej untuk mengendalikan dan memproses imej. Artikel ini akan menumpukan pada cara menggunakan Golang untuk mencerminkan, memutar dan membalikkan imej serta memberikan contoh kod yang sepadan. 2. Operasi cerminan Mencerminkan gambar adalah untuk menukar susun atur kiri dan kanan gambar. Di Golang, anda boleh menggunakan Fli pakej cabutan

Operasi imej PHP: bagaimana untuk mendapatkan saiz dan saiz fail imej Operasi imej PHP: bagaimana untuk mendapatkan saiz dan saiz fail imej Aug 26, 2023 am 08:55 AM

Operasi Imej PHP: Cara Mendapatkan Saiz dan Saiz Fail Imej Dalam membangunkan laman web atau aplikasi, kita selalunya perlu memproses imej. Mendapatkan saiz dan saiz fail imej adalah keperluan biasa, yang boleh dicapai dengan mudah melalui beberapa fungsi dalam PHP. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mendapatkan saiz dan saiz fail imej, dan melampirkan contoh kod. Dapatkan saiz imej Untuk mendapatkan saiz imej, anda boleh menggunakan fungsi terbina dalam PHP getimagesize(). Fungsi ini akan mengembalikan fail yang mengandungi saiz imej

Manipulasi imej Golang: Cara melakukan pemetaan kecerunan dan tekstur imej Manipulasi imej Golang: Cara melakukan pemetaan kecerunan dan tekstur imej Aug 22, 2023 pm 12:33 PM

Manipulasi imej Golang: Cara melakukan pemetaan kecerunan dan tekstur pada imej Gambaran Keseluruhan: Dalam pemprosesan imej, pemetaan kecerunan dan tekstur adalah dua teknik yang biasa digunakan. Kecerunan boleh mencipta peralihan kesan warna yang lancar, manakala pemetaan tekstur boleh memetakan imej tekstur kepada imej sasaran. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang untuk melaksanakan operasi pemetaan kecerunan dan tekstur pada imej. Kecerunan imej Pertama, kita perlu mengimport imej dan imej/warna pakej pemprosesan imej Golang. Berikut ialah kod sampel, dicipta oleh

Golang bersambung ke antara muka AI Baidu untuk melaksanakan fungsi analisis imej, menjadikannya mudah untuk bermula Golang bersambung ke antara muka AI Baidu untuk melaksanakan fungsi analisis imej, menjadikannya mudah untuk bermula Aug 26, 2023 pm 03:03 PM

Golang bersambung ke antara muka Baidu AI untuk merealisasikan fungsi analisis imej, mudah untuk bermula Ringkasan: Artikel ini akan memperkenalkan cara menggunakan Golang untuk menyambung ke antara muka Baidu AI untuk merealisasikan fungsi analisis imej. Kami akan menggunakan antara muka pengecaman imej yang disediakan oleh platform terbuka Baidu AI untuk melaksanakan pengecaman label dan fungsi pengecaman teks untuk imej dengan menulis kod dalam bahasa Golang. Sebelum memulakan kerja penyediaan, kami perlu menyediakan alatan dan bahan berikut: akaun pembangun Baidu untuk mendapatkan APIKey dan Se untuk mengakses antara muka AI Baidu

Manipulasi imej Golang: cara melaraskan kecerahan dan kontras Manipulasi imej Golang: cara melaraskan kecerahan dan kontras Aug 19, 2023 pm 04:53 PM

Manipulasi Imej Golang: Cara Melaraskan Kecerahan dan Kontras Pengenalan: Dalam pemprosesan imej, melaraskan kecerahan dan kontras imej adalah tugas yang sangat biasa. Dengan melaraskan kecerahan kita boleh menjadikan imej lebih cerah atau lebih gelap. Dan dengan melaraskan kontras, kita boleh menambah atau mengurangkan perbezaan warna dalam imej. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaraskan kecerahan dan kontras imej dan memberikan contoh kod. Import pakej yang diperlukan Pertama, kita perlu mengimport imej dan pakej warna untuk mengendalikan pembacaan dan penyimpanan imej.

Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej Aug 19, 2023 am 09:21 AM

Operasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej Pengenalan: Dalam bidang pemprosesan imej, keseimbangan warna dan penukaran warna adalah salah satu operasi yang biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan keseimbangan warna dan penukaran warna gambar serta memberikan contoh kod yang sepadan. 1. Keseimbangan warna Keseimbangan warna merujuk kepada melaraskan keamatan setiap saluran warna dalam imej untuk menjadikan keseluruhan warna imej lebih seragam dan semula jadi. Algoritma imbangan warna yang biasa digunakan termasuk imbangan kecerahan, imbangan putih dan penyamaan histogram. Imbangan kecerahan Keseimbangan kecerahan dicapai dengan melaraskan graf

Panduan praktikal ECharts dan golang: teknik untuk membuat carta statistik yang pelbagai Panduan praktikal ECharts dan golang: teknik untuk membuat carta statistik yang pelbagai Dec 17, 2023 pm 02:09 PM

Panduan amalan ECharts dan golang: Petua untuk membuat carta statistik yang pelbagai Pengenalan: Dengan perkembangan Internet dan pertumbuhan data yang meletup, visualisasi data statistik telah menjadi bahagian yang amat diperlukan dalam semua lapisan masyarakat. Visualisasi data boleh membantu orang ramai memahami dan menganalisis data dengan lebih intuitif, dengan itu meningkatkan ketepatan dan kecekapan membuat keputusan. Antara alat visualisasi data, ECharts ialah perpustakaan carta statistik sumber terbuka yang berkuasa dan mudah digunakan, manakala golang ialah bahasa pengaturcaraan yang cekap, ringkas dan berkuasa. Artikel ini akan

See all articles