Hallo,
Wie kann ich möglichst einfach die Hintergrundfarbe eines Bildes ermitteln? Welche Strategie ist hier angebracht?
Ich habe mir eine ziemlich primitive Strategie zu recht gelegt. Ich ermittle einfach für jeden Pixel die Farbe und nehme an, dass die Farbe die am öftesten pro Pixel in dem ganzen Bild vorkommt (in dem Fall handelt es sich um ein Sprite-Sheet). Hier hole ich mir zu aller erst ein Bitmap Objekt aus dem Image-Objekt und dann hole ich mir mittels GetPixel(x, y) die Farbe.
Wie kann ich das besser machen?
As a man thinketh in his heart, so he is.
Hallo der-schlingel,
GetPixel ist ziemlich langsam. Für Alternativen schau mal in GetPixel und SetPixel um Längen geschlagen. 800 mal schneller.
Die Frage ist halt, was du als Hintergrundfarbe definierst. Stell dir einen ein oranges Quadrat auf einer blauen Fläche vor. Ist dann das Blau der Hintergrund oder handelt es sich nicht doch um einen blauen Rahmen, durch den in der Mitte der orange Hintergrund sichtbar wird?
Solange du nicht definieren kannst, was du als Hintergrund ansiehst, kannst du es auch nicht programmieren. 😃
herbivore
@der-schlingel:
Du könntest deine Methode ja so erweitern, dass die Randpixel eines Bildes höher gewichtet werden?
Dennoch hat Herbivore recht... Das ist wieder mal ein schwer zu lösendes Problem. Deine Methode hängt primär davon ab, mit welchen Bildern du arbeitest.
#define struct union[
Hm, Schade. Dachte vielleicht gibt es da ein Patentrezept das mir nur nicht bekannt ist. Wäre ja nicht das erste Mal gewesen 😁
Werde wohl mittels RoBitmap meine Idee etwas verfeinern und nur den Seitenrand des Bildes prüfen. Da es ein Sprite-Sheet ist, sollte das hinhauen.
Danke für die Tipps.
As a man thinketh in his heart, so he is.