Carpe diem!

Make your lives extraordinary

Image Processing : Edit red channel hue/saturation dengan c#

Pada photosop terdapat fungsi “adjustment Layer” yang berkaitan dengan Hue/Saturation sehingga kita dapat menggeser semua warna menjadi warna lain dalam color space HSL/Hue, Saturation & Lightness (reference : http://en.wikipedia.org/wiki/HSL_and_HSV ) hanya dengan mengubah nilai Hue warna tersebut.

——————————————————————————————

dibawah ini adalah ilustrasi gambar color space untuk HSL :

Hue  : menunjukkan sudut dari lingkaran warna primer yang dikenal oleh format HSL .

warna primer dari color space HSL antara lain : Merah, Kuning, Hijau, Cyan, Biru dan Magenta.

Saturation : menunjukkan jari-jari dari lingkaran warna yang menunjukkan level warna abu-abu terhadap warna

Lightness : menunjukkan tingkat cahaya pada warna mulai dari hitam menuju putih.

contoh :  untuk menunjukkan warna merah

Hue = 0 (derajat)

Sat = 1.0

Lightness = 0.5

——————————————————————————————————————————————————

Untuk melakukan fungsi adjustment layer pada Hue/saturation yang terdapat pada photosop, kita harus mengetahui posisi (derajat pada lingkaran warna hue di HSL) dari masing-masing warna primer.  dibawah ini adalah batas-batas warna primer dengan tetangganya (nilai hue) :

Red :   outer : 315° – 45° /   inner : 345° – 15°
Yellow :   outer : 15° – 105° /   inner : 45° – 75°
Green :   outer : 75° – 165° /   inner : 105° – 135°
Cyan :   outer : 135° – 261° /   inner : 165° – 201°
Blue :   outer : 195° – 285° /   inner : 225° – 255°
Magenta :   outer : 225° – 345° /   inner : 285° – 315°

untuk melakukan editing Hue pada red channel pada sebuah image kita harus mengacu pada nilai hue 315° – 45° /   345° – 15°. kita dapat menggeser warna tersebut menjadi warna lain sesuka kita. misalkan warna merah pada image akan kita geser 180°.

yang perlu dilakukan adalah melakukan iterasi setiap pixel pada image dan menambahkan nilai hue-nya untuk pixel-pixel yang memenuhi kriteria nilai hue antara 315 – 45.

——————————————————————————————————————————————————

C# secara default hanya mengenali format warna RGB dengan extention A (alpha) dengan class name Color (di namespace system.drawing).

untuk melakukan pengolahan citra pada format HSL    class color hanya memiliki fungsi :

getHue() = mengembalikan  nilai float hue dari warna tersebut (nilai output : 0 – 359 ).

getSaturation() = mengembalikan  nilai float saturation dari warna (nilai output : 0.0 – 1.0 ).

getBrightness() = mengembalikan  nilai float brightness/lightness dari warna (nilai output : 0.0 – 1.0 ).

namun tidak memiliki fungsi untuk melakukan perubahan nilai HSL.

terima kasih pada om google yang telah menemukan konversi & fungsi untuk mengubah warna RGB – HS http://www.bobpowell.net/RGBHSB.htm

dibawah ini adalah kode untuk menambahkan 180 nilai hue pada  red channel.

                Color c;
                Color newc;
                float h, s, l;
                add += 30;
                Bitmap newimage = (Bitmap) image.Clone();

                for (int i = 0; i < image.Width; i++)
                {
                    for (int j = 0; j < image.Height; j++)
                    {
                        c = image.GetPixel(i, j);
                        h = c.GetHue();
                        s = c.GetSaturation();
                        l = c.GetBrightness();
                        // filter red channel 315 - 360 / 0 - 45
                        if ((h > 315) && (h < 360) || (h >= 0) && (h < 45))
                        {
                            h += add;
                            if (h > 360) h -= 360;

                        }
                        h = h / 360;
                        newc = RGBHSL.SetHue(c, h);

                        newimage.SetPixel(i, j, newc);

                    }
                }

December 3, 2009 - Posted by | code Warior, Ngoprek, santai, techno | , , , , , , , , ,

1 Comment »

  1. Terima kasih untuk infonya gan🙂

    Comment by Jual Pasir | July 8, 2011 | Reply


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: