Práce s grafikou XIII - Plastický obraz
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Práce s grafikou XIII  - Plastický obrazPráce s grafikou XIII - Plastický obraz

 

Práce s grafikou XIII - Plastický obraz

Google       Google       5. 2. 2006       7 238×

Ve světě grafiky je tolik filtrů, že si to snad ani nedovedeme představit. A ještě víc je jejich modifikací a jejich kombinací a tak dále. Nastavením různých parametrů opět dosahujeme jiných změn...
..

Reklama
Reklama

Některé filtry se objeví jen tak. Náhodou píšete, píšete a je to tu. Stejně jako tento filtr, který je vlastně vedlejším produktem při tvorbě úplně jiného filtru, o kterém jsem psal a to je ostření.

Jeho kód vypadá takto:


Public Sub Plastic(Img As PictureBox, img2 As PictureBox, Value As Long)
    Img.DrawWidth = 1
    Img.ScaleMode = 3
    Img.AutoRedraw = True
    rgbmax = 256
    On Error Resume Next
        For x = 0 To Img.ScaleWidth
            For y = 0 To Img.ScaleHeight
                DoEvents
                ImgP = GetPixel(Img.hdc, x, y)
                b0 = ImgP  rgbmax  rgbmax
                g0 = (ImgP  rgbmax) Mod rgbmax
                r0 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x + Value, y)
                b1 = ImgP  rgbmax  rgbmax
                g1 = (ImgP  rgbmax) Mod rgbmax
                r1 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x, y + Value)
                b2 = ImgP  rgbmax  rgbmax
                g2 = (ImgP  rgbmax) Mod rgbmax
                r2 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x - Value, y)
                b3 = ImgP  rgbmax  rgbmax
                g3 = (ImgP  rgbmax) Mod rgbmax
                r3 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x, y - Value)
                b4 = ImgP  rgbmax  rgbmax
                g4 = (ImgP  rgbmax) Mod rgbmax
                r4 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x - Value, y - Value)
                b5 = ImgP  rgbmax  rgbmax
                g5 = (ImgP  rgbmax) Mod rgbmax

                r5 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x + Value, y - Value)
                b6 = ImgP  rgbmax  rgbmax
                g6 = (ImgP  rgbmax) Mod rgbmax
                r6 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x - Value, y + Value)
                b7 = ImgP  rgbmax  rgbmax
                g7 = (ImgP  rgbmax) Mod rgbmax
                r7 = ImgP Mod rgbmax
               ImgP = GetPixel(Img.hdc, x + Value, y + Value)
                b8 = ImgP  rgbmax  rgbmax
                g8 = (ImgP  rgbmax) Mod rgbmax
                r8 = ImgP Mod rgbmax
                
                r = ((-r0) - (r5 + r7 + r3)) + (r1 + r6 + r8 + r2 + r4)
                g = ((-g0) - (g5 + g7 + g3)) + (g1 + g6 + g8 + g2 + g4)
                b = ((-b0) - (b5 + b7 + b3)) + (b1 + b6 + b8 + b2 + b4)

                If r >= 255 Then r = 255
                If g >= 255 Then g = 255
                If b >= 255 Then b = 255
                If r <= 0 Then r = 0
                If g <= 0 Then g = 0
                If b <= 0 Then b = 0
                
                Call SetPixel(img2.hdc, x, y, RGB(r, g, b))
            Next y
            DoEvents
        Next x
End Sub

Upřímně řečeno, když vidím ten vzorec, tak nic moc. Se docela divím, že to vůbec funguje. Tak jak ten vzorec vidíte, tak vypadl, když jsem ho napsal prakticky omylem. Tak jsem ho trochu upravil.


r = (r1 + r6 + r8 + r2 + r4) - (r0 + r5 + r7 + r3)

Jak jednoduché jsou to rozdíly součtů jednotlivých okolních bodů. A tak pěkně to funguje. Však zkuste a uvidíte, optimální hodnoty jsou asi:


Plastic Picture1, Picture2, 1

Při hodnotách jiných se tento efekt výrazně mění (např. s hodnotami 10 a víc-ale ne o moc-tak do 30, ale to už často nepoznáte předešlý motiv, ale stojí za to to vyzkoušet, ale pak je potřeba tento efekt přejmenovat).

Třeba mně se povedlo s hodnotami:


Plastic Picture1, Picture2, 60

Dosáhnout tohoto:

A to z koňské hlavy, kterou používám jako testovací obrázek.

To je pro dnešek vše.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

2 názory  —  2 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Reklama
Reklama
Obrázek ke článku Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý