![]() |
Schwarz-Weiß-Bildanalyse
Hallo DP!
Wie bereits ![]() Ich brauche einen Algorithmus, der mir aus einer schwarz-weißen Bitmap ein Rechteck ermittelt, in dem soundsoviel Prozent der weißen Pixel liegen und der dabei recht flott arbeitet. Hoffe, ich bekomme interessante Ansätze, Euer LDer. |
Re: Schwarz-Weiß-Bildanalyse
Ich hab mir den alten Thread angeschaut und muss sagen, dass dein Schwarz-Weiß Macher nicht sehr schnell ist/sein kann, da du da auf Pixel zugreifst.
Wie du schon richtig rausbekommen hast, ist man da mit Scanline viel besser dran. Zweiteres: ich würde zuerst einmal versuchen, Ecken im Bild zu detektieren. Also zuerst das Bild Schwarz-Weiß machen, dann einen Ecken-Filterer drüber laufen lassen. Für das Filtern von Ecken habe ich einmal ein Codesnippet gepostet - Suche hier nach "Sobel Operator" bzw einfach nur "Sobel" (mr_emre_d, alter Account) MfG |
Re: Schwarz-Weiß-Bildanalyse
Aber der S/W-Macher ist schnell, und den nutze ich, wie man auch im letzten Thread erkennen kann...
Delphi-Quellcode:
Und zu deinem "Sobel": Is en schöner Effekt, nur ich finde ihn etwas unbrauchbar, ich gehe da über Differenzbilder ran und habe dort eine weiße Fläche, wo mein Kopf ist...
procedure BlackWhite(Input:TBitmap);
type PixArray = packed record b, g, r: Byte; end; var P: ^PixArray; X, Y:integer; Hell:Byte; DHell:int64; const paWhite:PixArray=(b:255; g:255; r:255); paBlack:PixArray=(b:0; g:0; r:0); begin Input.PixelFormat:=pf24bit; DHell:=0; for Y:=0 to Input.Height-1 do begin P:= Input.ScanLine[Y]; for X:=0 to Input.Width-1 do begin Hell:=(P^.b*21+P^.g*174+P^.r*61)div 256; P^.b:=Hell; P^.g:=Hell; P^.r:=Hell; DHell:=DHell+Hell; Inc(P); end; end; DHell:=DHell div (Input.Height*Input.Width); for Y:=0 to Input.Height-1 do begin P:= Input.ScanLine[Y]; for X:=0 to Input.Width-1 do begin if(P^.b > DHell) then P^:=paWhite else P^:=paBlack; Inc(P); end; end; end; Da aber durch Rauschen ein gewisser Fehler entsteht, hätte ich jetzt gerne 90% (oder so, kann man dann ja ausprobieren) der weißen Pixel "eingerechteckt", und ich weiß nicht, was ich da sobeln soll ;) MfG LDer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz