Seite 2 von 3

Verfasst: 28.11.2006 14:34
von Kiffi
Dr. Shrek hat geschrieben:Aufgabe:
Wer schreibt den schnellsten Alghorithmus?
kein schlechter Vorschlag! Obwohl: Ich bin mit meinem Code oben schon
an meine persönlichen Tuning-Grenzen angelangt. ;-)

Was mich derzeit mehr interessieren würde: #NULL sprach schon an, dass es
gerade bei JPGs zu 'Verunreinigungen' von Farben kommen kann. Sprich:
Der Rand besteht nicht aus reinem Weiß, sondern sieht eher aus wie
schmutziger Schnee. Die Idee ist, dass man nicht nur die Randfarbe angeben
kann, sondern auch die maximale Abweichung mittels eines prozentualen
Wertes (muss mal heute abend ein wenig tüfteln, wie man das machen
kann).

Grüße ... Kiffi

Verfasst: 28.11.2006 14:52
von DrShrek
Kiffi hat geschrieben:
Dr. Shrek hat geschrieben:Aufgabe:
Wer schreibt den schnellsten Alghorithmus?
kein schlechter Vorschlag! Obwohl: Ich bin mit meinem Code oben schon
an meine persönlichen Tuning-Grenzen angelangt. ;-)

Was mich derzeit mehr interessieren würde: #NULL sprach schon an, dass es
gerade bei JPGs zu 'Verunreinigungen' von Farben kommen kann. Sprich:
Der Rand besteht nicht aus reinem Weiß, sondern sieht eher aus wie
schmutziger Schnee. Die Idee ist, dass man nicht nur die Randfarbe angeben
Nun das würde die ganze Sache nur noch interessanter machen. :wink:

Verfasst: 28.11.2006 14:54
von Kaeru Gaman
für jeden kanal:

Abs( PointCol - TestCol ) < Proz * 2.55

Verfasst: 28.11.2006 14:58
von Kiffi
Kaeru Gaman hat geschrieben:für jeden kanal:
Abs( PointCol - TestCol ) < Proz * 2.55
meinst Du mit Kanal R, G und B? Warum Faktor 2.55?

Grüße ... Kiffi

Verfasst: 28.11.2006 15:00
von Kaeru Gaman
yo, R,G und B, wobei man nacheinander prüfen könnte,
dass er die anderen kanäle nicht extrahieren muss, wenn der erste drüber is.

> Warum Faktor 2.55?

x Prozent von 255 sind x*2.55 ;)

man könnte sich diese multiplikation sparen, wenn man die abweichung gleich in bytewert angibt.
andererseits muss man sie auch nur ein einziges mal durchführen, vor allen schleifen, is also auch egal.

Verfasst: 28.11.2006 15:17
von Kiffi
Kaeru Gaman hat geschrieben:x Prozent von 255 sind x*2.55 ;)
ähm, ja, :oops: :wink:

Danke für die Infos & Grüße ... Kiffi

Verfasst: 28.11.2006 15:19
von Kaeru Gaman
ich hab mal runtergeschrieben, wie ich mir den algo vorstelle.

getestet hab ichs noch nich..... ;)

Code: Alles auswählen

;************************************************** 
;** Tests a Point for being inside a 
;** color-range near a reference-value
;** 
;** needs an open Direct-Draw Channel
;** 
;** Arguments:
;** x.l , y.l   Coordinates of the tested Point
;** col.l       reference color
;** diff.l      percentage value the tested point
;**             may differ to be still tested true
;** 
;** Returns:
;** Boolean: True for Value in Range
;** 
;** By Kaeru Gaman, Nov.28th, 2006
;** PB-Ver 4.00
;**

Procedure ColTest(x.l, y.l, col.l, diff.f)
  Bdif = diff * 2.55
  pot = Point(x,y)
  Tdif = (pot & $0000FF) - (col & $0000FF)
  If Tdif >= -Bdif And Tdif <= Bdif
    Tdif = ((pot & $00FF00)>>8) - ((col & $00FF00)>>8)
    If Tdif >= -Bdif And Tdif <= Bdif
      Tdif = ((pot & $FF0000)>>16) - ((col & $FF0000)>>16)
      If Tdif >= -Bdif And Tdif <= Bdif
        ProcedureReturn #True
      Else
        ProcedureReturn #False
      EndIf
    Else
      ProcedureReturn #False
    EndIf
  Else
    ProcedureReturn #False
  EndIf  
EndProcedure

......and now for something totally different:

das pixelgenaue positionieren des auswahlrahmens in Irfan geht einfacher,
wenn man vorher die ansicht zoomt.... ;)

Verfasst: 28.11.2006 15:52
von DrShrek
Dr. Shrek hat geschrieben:Es wird ein Programmgerüst geliefert mit einer leeren Funktion:
Rect = GetRect(Image, Color)
Jetzt fehlt nur noch das Programmgerüst und es kann los gehen.

Verfasst: 28.11.2006 16:21
von Kiffi
Kaeru Gaman hat geschrieben:das pixelgenaue positionieren des auswahlrahmens in Irfan geht einfacher,
wenn man vorher die ansicht zoomt.... ;)
nee, ehrlich jetzt? :mrgreen:

Aber im ernst: bei Bilder, die mal locker 5000 Pxls in Breite und Höhe haben,
kann das mit dem Auswahlrahmen schon mal etwas länger dauern ;-)

Thx 4 Code!

Grüße ... Kiffi

Verfasst: 28.11.2006 22:11
von edel
Dr. Shrek hat geschrieben:[...]
Wer schreibt den schnellsten Alghorithmus?
[...]
Einschränkungen:
1) Es darf nur die Point() Funktion zum Auslesen der Farbe verwendet werden.
2) Nur PB Code ohne Assembler [...]
Na mit den Einschraenkungen wird der schnellste Code aber immer noch
sehr sehr langsam sein.