AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schwarz-Weiß-Bildanalyse

Schwarz-Weiß-Bildanalyse

Offene Frage von "LDericher"
Ein Thema von LDericher · begonnen am 29. Jul 2009 · letzter Beitrag vom 29. Jul 2009
Antwort Antwort
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#1

Schwarz-Weiß-Bildanalyse

  Alt 29. Jul 2009, 11:59
Hallo DP!

Wie bereits hier angekündigt, mache ich dieses Thema auf, weil ich nun ein konkretes Problem habe.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Schwarz-Weiß-Bildanalyse

  Alt 29. Jul 2009, 12:14
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
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Schwarz-Weiß-Bildanalyse

  Alt 29. Jul 2009, 12:29
Aber der S/W-Macher ist schnell, und den nutze ich, wie man auch im letzten Thread erkennen kann...

Delphi-Quellcode:
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;
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...
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz