Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ta bort röda ögon

Postades av 2005-10-01 20:38:14 - Rickard Lindgren, i forum vb.net, Tråden har 7 Kommentarer och lästs av 697 personer

Hej,
Jag letar efter en artikel om att ta bort röda ögon på digitalfoton. Vad jag behöver är kodexempel på hur man kan implementera en sån funktion.


Svara

Sv: Ta bort röda ögon

Postades av 2005-10-02 07:38:23 - Lars Gottfridsson

du får ladda in aktuell bild i en picturebox och därefter tillverka
en arbetskopia:

Dim bmp As Bitmap = PictureBox1.Image.Clone

Sen i klickhändelsen för Pictureboxen, får du returnera muskoordinaterna:

dim p as point
p.X = e.X : p.Y = e.X

Efter detta ska dessa värden kalibreras så att de korrelerar till de faktiska
koordinater av ursprungsbilden, oberoende av PictureBox1 ev. bildminskning och offset.

nu får köra en nästlad for next- loop som som motsvarar ett grid-format område av
valfri storlek runt de nymoddade kordinaterna p.X och p.Y.

i denna "gridloop" får du m.h.a :

bmp.GetPixel och
bmp.SetPixel

ändra rgb-värdet om du tycker att gränsvärdet för rött uppnåts!

hade jag tid skulle jag skrivit hela programmet åt dig, men nu är det golf!


Svara

Sv:Ta bort röda ögon

Postades av 2005-10-02 08:55:23 - Rickard Lindgren

Ok men då har jag principen klar! Jag ska experimentera så snart jag hinner.
Hoppas golfen gick bra!

/Rickard


Svara

Sv: Ta bort röda ögon

Postades av 2005-10-02 16:45:46 - Niklas Jansson

Nja, riktigt så skulle jag inte beskriva en algoritm i frågan.

Hade snarare använt någon "filling algorithm" med en toleransnivå. Röda ögon har nästan alltid väldigt skarpa kanter och klarar sig med en tolerans på säg 50. (dvs avstånd("färgkoordinat förra", "färgkoordinat nya" <50)
Avstånd blir sqrt(r1^2-r2^2+ g1^2+ ... )
Grejen är också att "röda" ögon inte alltid är helt röda, utan kan ha ganska många variationer.

Principen är:
1. Utgå från en koordinat. Gör en matris, lika stor som bilden, med två bool. Den första beskriver om pixeln är besökt, den andra om pixeln ska färgas.
2. Anropa följande på första koordinaten.
3. Om pixeln redan är besökt, avsluta. Sätt annars till pixeln som besökt
4. Om det är den första pixeln, sätt den till "ska färgas". Kolla annars om avståndet i pixelfärg är tillräckligt nära föregående. Är den det, sätt till "ska färgas", annars "ska inte färgas".
5. Om den ska färgas, anropa funktionen från 3 på alla grannar (rekursivt).

Den kan modifieras så att man istället för att titta på "senaste färg" kollar på "första färgen". Det ger ett lite mer tillförlitligt resultat, och ser dessutom till att den inte fyller stora områden som har gradienter med samma färg.

Annars kan man just i fallet "röda ögon" tänka sig en enklare variant.
Man letar horisontellt och vertikalt efter punkter där man når sluten på cirkeln. Då har man fyra punkter på den (det behövs egentligen bara tre), och man kan ganska lätt bestämma cirkeln med en ekvation. Sen så fyller du just den cirkeln med svart.


Svara

Sv:Ta bort röda ögon

Postades av 2005-10-02 19:55:58 - Lars Gottfridsson

Re: Niklas

Jag tycker att du överkomplicerar när du vill använda de de genombrända röda nyanserna.
De är enligt mig redan förstörda och tjänar litet och missvisande syfte.
Jag tror mer på att man bör lokaliserar de "röda" pixelerna och sen återskapar en harmonisk övergång från irisenfärg till den vit reflektionen i puppilens mitt. Detta kan man säkert göra med nån enkel algorithm.

Tjosan!



Svara

Sv: Ta bort röda ögon

Postades av 2005-10-03 12:46:48 - Niklas Jansson

Det är ju exakt det jag gör?
"Min" algoritm lokaliserar de röda pixlarna och markerar tydligt vilka de är med en bool. I princip kan ju även lite fuzzy logic slängas in. Exakt vad man gör med dem är ju upp till var och en. Sen är jag tveksam av din tolkning, jag hade för mig att de röda ögonen var effekter i pupillen, och ska isf rimligtvis färgas svarta.

Ärligt talat förstår jag inte vad du menar med att jag "överkomplicerar".


Svara

Sv:Ta bort röda ögon

Postades av 2005-10-03 15:47:42 - Lars Gottfridsson

Hej Niklas,
Jag säger som Stenmark: " Det är inte lätt och förklara, för en som inte begrip"

eller varför inte

" never argue with a idiot, he'll only drag you down to his level and beat you through experience "

förresten vem sa att pupillen inte skulle vara svart?
övergången jag pratar om är givetvis svart men går från Irisfärgen till vitt!


Svara

Sv: Ta bort röda ögon

Postades av 2005-10-03 19:31:07 - Niklas Jansson

Ok... ?
Exakt vad är det jag inte förstår?
Jag har en misstanke om att jag är kapabel till jag åtminstone förstår <b>vad</b> det inte är jag i så fall förstår.

Det du skriver i ditt första svar är i princip att du gör en rektangel på mxn pixlar kring de punkterna man klickar på, och sen färga de pixlar som är för långt ifrån rött till en annan färg. Allt det andra är bara triviala skalningar och implementationsdetaljer.

Vad jag då föreslår är en enkel fyllningsalgoritm som utgår från de punkterna man klickar och därifrån letar utåt för att hitta kanterna på den röda fläcken. På så sätt kan man hantera röda ögon av godtycklig storlek, och med godtycklig nyans av rött. Det klarar inte din variant.

<b>>förresten vem sa att pupillen inte skulle vara svart?</b>
<b>>övergången jag pratar om är givetvis svart men går från Irisfärgen till vitt!</b>
"Övergången är svart"?
"men går från irisfärgen till vitt"?
En övergång kan per definition inte bara ha en färg, men jag antar att du menar något i stil med irisfärg som går över i svart, vilket slutligen går över i vitt, till något som skall föreställa någon slags glans.

Då säger jag:
1. Kanten mellan iris och pupillen är skarp. Eftersom den är skarp vill vi inte ha någon mjuk övergång.
2. Att själv skapa en reflektion som inte finns i bilden känns dels lite krystat, dels ganska onödigt.

<b>>" never argue with a idiot, he'll only drag you down to his level and beat you through experience "</b>
Intressant!
Vad har du själv för utbildning inom, säg, bildbehandling?

Vad jag vet så är det nästan exakt den metod jag föreslår som används i senaste versionen av Adobe Photoshop för borttagning av röda ögon. Men jag har säkert fel. Berätta gärna mer!


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
450
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies