Bitmap unterschiedlich Linux und Windows
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Bitmap unterschiedlich Linux und Windows
Kennst du das schon?
- https://sourceforge.net/p/sdpo-cl/svn/H ... poDebayer/
- http://sdpo-cl.hg.sourceforge.net/hgweb ... l/sdpo-cl/
- https://sourceforge.net/p/sdpo-cl/svn/H ... poDebayer/
- http://sdpo-cl.hg.sourceforge.net/hgweb ... l/sdpo-cl/
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Nein kannte ich noch nicht. Wieder was zum studieren.
Danke.
Wird leider auch wieder in C abgehandelt und nimmt auch auf das unterschiedliche Memorylayout keine wirkliche Rücksicht.
Danke.
Wird leider auch wieder in C abgehandelt und nimmt auch auf das unterschiedliche Memorylayout keine wirkliche Rücksicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
Hi!
Also was ich bisher über Algoritmen zu Bayer gefunden habe, ist eher trivial. Da wird debattiert, ob man vertikal oder horizontal interpoliert und ähnliche Scherze.
Da sind zumindest die Verfahren Mitchel, Spline und Lanczos3 und Lanczos4 deutlich überlegen, die alle in BGRAbitmap vorhanden sind.
Und bei den Kameras sehe ich das so:
Entweder man holt sich billigen Aldi-Schrott und wundert sich über nix.
Oder man holt sich ne Kamera, die für jede Farbe nen eigenen Sensor hat.
Und zum Abschluß noch die ketzerische Frage:
Wer braucht Fotos, die größer als der Monitor sind?
Zum Ansehen muss man die sowieso wieder runter skalieren.
Winni
Also was ich bisher über Algoritmen zu Bayer gefunden habe, ist eher trivial. Da wird debattiert, ob man vertikal oder horizontal interpoliert und ähnliche Scherze.
Da sind zumindest die Verfahren Mitchel, Spline und Lanczos3 und Lanczos4 deutlich überlegen, die alle in BGRAbitmap vorhanden sind.
Und bei den Kameras sehe ich das so:
Entweder man holt sich billigen Aldi-Schrott und wundert sich über nix.
Oder man holt sich ne Kamera, die für jede Farbe nen eigenen Sensor hat.
Und zum Abschluß noch die ketzerische Frage:
Wer braucht Fotos, die größer als der Monitor sind?
Zum Ansehen muss man die sowieso wieder runter skalieren.
Winni
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Es geht hier um keine Aldi Kameras. Die würden ohne Probleme funktionierenWinni hat geschrieben: Fr 9. Apr 2021, 22:13 Und zum Abschluß noch die ketzerische Frage:
Wer braucht Fotos, die größer als der Monitor sind?
Zum Ansehen muss man die sowieso wieder runter skalieren.
Winni

Es geht hier in Richtung Industriekameras mit Auflösungen bis 20Mpix und sonstigen speziellen Eigenschaften. Aktuell GigE und USB3 Interface. Noch dazu kommt, das es manchmal nicht gestattet ist Windows zu verwenden und man auf Linux ausweichen MUSS obwohl der Hersteller hauptsächlich WIndows unterstützt.
Das beim Ansehen, muss man insofern relativieren, das dort nicht das ganze Bild von Belang ist, sondern das man in einen frei gewählten Ausschnitt hineinzoomen können muss. Dort sollte die Auflösung so hoch wie möglich sein um Details zu erkennen. Stell dir vor, man hat ein Foto von einem 8-10m2 großen Bereich und sollte auf einer Konservendose die Schrift lesen können. Nur damit man sagen kann, sie her wir haben die richtige Bezeichnung dort hinaufgedruckt. (und zwar im Kleingedruckten

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
@08/15
Hi!
Okay, das ist ein anderes paar Schuhe.
Da würde ich empfehlen als Filter Lanczos4. Der ist als Filter oft zu "hart" , aber liefert genau das, was Du brauchst: Reichlich Kontrast. Dafür neigt er dazu, bei den Farben zu "übertreiben", aber das ist ja anscheinend genau das Richtige für Dich, da es ja nicht um Blümchen-Wiesen geht.
Also ans Ende meines Codes:
Winni
Hi!
Okay, das ist ein anderes paar Schuhe.
Da würde ich empfehlen als Filter Lanczos4. Der ist als Filter oft zu "hart" , aber liefert genau das, was Du brauchst: Reichlich Kontrast. Dafür neigt er dazu, bei den Farben zu "übertreiben", aber das ist ja anscheinend genau das Richtige für Dich, da es ja nicht um Blümchen-Wiesen geht.
Also ans Ende meines Codes:
Code: Alles auswählen
img.ResampleFilter:=rfLanczos4;
BGRAreplace (img, img.resample(NewWidth, NewHeight));
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Das mit dem Beispiel nicht zu wörtlich nehmen. Es ist nur ein Gleichnis. Ich hätte genau so gut sagen können, das man auf einer Blumenwiese eine Biene mit Athritis finden muss beim Zoomen. 
Real, muss ich mich mal einarbeiten in das ganze. Nur bin ich gleich mal über die Untiefen des Cross entwickelns und den Unterschieden auf den Plattformen in den Tiefen der Widgetsets gestolpert.

Real, muss ich mich mal einarbeiten in das ganze. Nur bin ich gleich mal über die Untiefen des Cross entwickelns und den Unterschieden auf den Plattformen in den Tiefen der Widgetsets gestolpert.

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
Hi!
Nochmal zu BGRAbitmap.
Das ist zu einer riesigen Bibliothek angewachsen, dass der Einstieg manchmal schwer fällt.
Ausschnitt geht so, wobei die Dimensionen des Ausschnitts (TRect) Deine software liefern muss.
Hoffe Du kannst jetzt die Beschriftung auf der Biene lesen ....
Winni
Nochmal zu BGRAbitmap.
Das ist zu einer riesigen Bibliothek angewachsen, dass der Einstieg manchmal schwer fällt.
Ausschnitt geht so, wobei die Dimensionen des Ausschnitts (TRect) Deine software liefern muss.
Code: Alles auswählen
var tmp, img : TBGRAbitmap:
R : Trect;
.....
tmp := TBGRAbitmap.create;
BGRAreplace (tmp,img.GetPart (R));
tmp.resampleFilter := rfLanczos4;
BGRAReplace (tmp, tmp.resample(NewWidth,NewHeight));
// Auf irgendeinen canvas zeichnen
tmp.Draw(Image1.Canvas,0,0);
tmp.free;
Winni
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Langsam verstehe ich das ganze etwas mehr. Habe es für mich mal zum laufen gebracht, in der vollen Auflösung. Es ist wirklich so, das man einfach nur zwischen RGB und RGBA richtig umkopieren muss.
Eine Erkenntnis für mich ist, Windows arbeitet BGR und Linux BGRA. Das war der eigentlich Knackpunkt. BGRABitmap macht es da einfacher, es ist auf jeder Plattform BGRA. Das macht Applikationen die für beide Welten geschrieben sind einfacher. Auf mal gut zu wissen, warum solche Komponenten entstehen.
Die Sourcen bei GITHUB im Demobereich habe ich angepasst.
Eine Erkenntnis für mich ist, Windows arbeitet BGR und Linux BGRA. Das war der eigentlich Knackpunkt. BGRABitmap macht es da einfacher, es ist auf jeder Plattform BGRA. Das macht Applikationen die für beide Welten geschrieben sind einfacher. Auf mal gut zu wissen, warum solche Komponenten entstehen.
Die Sourcen bei GITHUB im Demobereich habe ich angepasst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
Hi!
Jo - BGRAbitmap hat viele Vorteile.
Nebst den von Dir genannten vor allem eines: Geschwindigkeit.
Da Du ja auch Pixel-Ebene arbeiten musst, so sind
BGRAbitmap.setPixel und BGRAbitmap.getPixel um Meilen schneller als
Bitmap.pixels[ ]. Das ist vor allem bei größeren Datenmengen sehr nervenschonend.
Falls es Fragen gibt: Immer her damit. Ich arbeite seit einigen Jahren mit BGRAbitmap,
was nicht heisst dass ich alle Ecken kenne. Dafür ist es zu groß geworden.
Winni
Jo - BGRAbitmap hat viele Vorteile.
Nebst den von Dir genannten vor allem eines: Geschwindigkeit.
Da Du ja auch Pixel-Ebene arbeiten musst, so sind
BGRAbitmap.setPixel und BGRAbitmap.getPixel um Meilen schneller als
Bitmap.pixels[ ]. Das ist vor allem bei größeren Datenmengen sehr nervenschonend.
Falls es Fragen gibt: Immer her damit. Ich arbeite seit einigen Jahren mit BGRAbitmap,
was nicht heisst dass ich alle Ecken kenne. Dafür ist es zu groß geworden.
Winni
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Danke, Fragen gibt es jede Menge.
Bevor ich was selbst schreibe, gibt es in BGRABitmap etwas für den Weissabgleich ? Die Bilder sind ja echte Rohdaten, wie du festgestellt hast.
Bei den Filtern finde ich nichts was von der Beschreibung her passen würde.

Bevor ich was selbst schreibe, gibt es in BGRABitmap etwas für den Weissabgleich ? Die Bilder sind ja echte Rohdaten, wie du festgestellt hast.
Bei den Filtern finde ich nichts was von der Beschreibung her passen würde.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
Hi!
BGRAbitmap ist ein Schweizermesser, mit dem man viel veranstalten kann, das aber für Spezialeinsätze nicht gerüstet ist. Durch circulars Entwicklung von Lazpaint wird er jetzt aber auch mit den Wünschen der User konfrontiert. In dem Source von Lazpaint kann man gut sehen, wie die diversen BGRAbitmap-Funktionen eingesetzt werden können.
Weißabgleich : Eigentlich sollte die Kamera das doch machen ....
Aus der Hüfte geschossen: poor mans Weißabgleich:
Punkt anklicken, der eigentlich weiss sein sollte
Pix := myBGRAbitmap.getpixel(x,y);
holt dir in Pix die RGB-Werte und den Alpha-Wert
Für alle anderen Punkte jetzt die Werte von 255- Pix.[ r g b alpha ] addieren.
Dabei nicht über MaxByte addieren.
Ich weiß, dass der Weiß-Abgleich deutlich komplexer ist ...
Winni
PS.: Das mit ss oder ß lern ich auch noch mal. Aber nicht in diesem Leben ....
BGRAbitmap ist ein Schweizermesser, mit dem man viel veranstalten kann, das aber für Spezialeinsätze nicht gerüstet ist. Durch circulars Entwicklung von Lazpaint wird er jetzt aber auch mit den Wünschen der User konfrontiert. In dem Source von Lazpaint kann man gut sehen, wie die diversen BGRAbitmap-Funktionen eingesetzt werden können.
Weißabgleich : Eigentlich sollte die Kamera das doch machen ....
Aus der Hüfte geschossen: poor mans Weißabgleich:
Punkt anklicken, der eigentlich weiss sein sollte
Pix := myBGRAbitmap.getpixel(x,y);
holt dir in Pix die RGB-Werte und den Alpha-Wert
Für alle anderen Punkte jetzt die Werte von 255- Pix.[ r g b alpha ] addieren.
Dabei nicht über MaxByte addieren.
Ich weiß, dass der Weiß-Abgleich deutlich komplexer ist ...
Winni
PS.: Das mit ss oder ß lern ich auch noch mal. Aber nicht in diesem Leben ....
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Ich habe mir LazPaint zu dem Zwecke geladen, weil man dort die Filter 'in media res' ausprobieren kann.
Grundlegend bin ich mit Industriekameras konfrontiert. Bisher konnten die intern einiges umrechnen, nur zeigen sich leider die Grenzen. Bei der jetzigen Kamera, die auch fokussieren per Software können, ist es mit der restlichen Intelligenz nicht unbedingt gut bestellt. Der Hersteller verlagert alles am PC. Damit bleibt die nackte Kamera über. Somit muss ich mich leider (wieder) mit den Niederungen der Bildverarbeitung beschäftigen. Klar OpenCV wäre eine Möglichkeit, aber etwas oversized, da ich nur ein blödes Bild speichern muss. Mit Text, der im Bild eingebrannt werden muss und mit entsprechenden EXIF Daten. BGRABitmap hat nichts mit EXIF am Hut, das ist aber kein Problem. dEXIF macht dort die Arbeit.
Das mit dem Weissabgleich werde ich mir ein wenig genauer ansehen.
BTW: Das mit dem ss und ß kenne ich. Ich habe im Familiennamen ein 'scharfes s' und das sogar mittlerweile in Pass und Führerschein eingetragen
Grundlegend bin ich mit Industriekameras konfrontiert. Bisher konnten die intern einiges umrechnen, nur zeigen sich leider die Grenzen. Bei der jetzigen Kamera, die auch fokussieren per Software können, ist es mit der restlichen Intelligenz nicht unbedingt gut bestellt. Der Hersteller verlagert alles am PC. Damit bleibt die nackte Kamera über. Somit muss ich mich leider (wieder) mit den Niederungen der Bildverarbeitung beschäftigen. Klar OpenCV wäre eine Möglichkeit, aber etwas oversized, da ich nur ein blödes Bild speichern muss. Mit Text, der im Bild eingebrannt werden muss und mit entsprechenden EXIF Daten. BGRABitmap hat nichts mit EXIF am Hut, das ist aber kein Problem. dEXIF macht dort die Arbeit.
Das mit dem Weissabgleich werde ich mir ein wenig genauer ansehen.
BTW: Das mit dem ss und ß kenne ich. Ich habe im Familiennamen ein 'scharfes s' und das sogar mittlerweile in Pass und Führerschein eingetragen

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Hier ist etwas zum Weissabgleich https://github.com/afriess/GSTCamera/tr ... iteBalance
Ich habe die Filter 'Normalize' von BGRABitmap dort auch einmal eingebaut, aber keine Wirkung festgestellt. Vielleicht habe ich das nur falsch angefasst.
Hier das ganze mit einem Filter aus C# EmguCv nach Pascal mit BGRABitmap transformiert. Links das Bild vor der Berechnung, rechts das Ergebnis.
Die linke Checkbos ist der Filter in unterschiedlichen Einstellungen. Rechts die Checkbox, beinhaltet den Filter von BGRABitmap.
Ich habe die Filter 'Normalize' von BGRABitmap dort auch einmal eingebaut, aber keine Wirkung festgestellt. Vielleicht habe ich das nur falsch angefasst.
Code: Alles auswählen
case ComboBox2.ItemIndex of
1: img.InplaceNormalize(false);
2: img.InplaceNormalize(true);
end;
Die linke Checkbos ist der Filter in unterschiedlichen Einstellungen. Rechts die Checkbox, beinhaltet den Filter von BGRABitmap.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Bitmap unterschiedlich Linux und Windows
Hallo!
Der BGRA-Filter Normalize hat nix mit Weissabgleich zu tun.
Er untersucht, ob der gesamte Farbraum ausgenutzt wird, also pro Kanal von 0..255
3 Beispiele, bei denen das nicht der Fall ist:
* Das Bild ist zu dunkel. Nur z.B. 0..127 genutzt.
* Das Bild ist zu hell. Nur z.B. 128..255 genutzt.
* Das Bild hat zu wenig Kontrast. Nur z.B. 64 .. 192 genutzt.
In all diesen Fällen spreizt BGRA.InplaceNormalize auf volle 0..255.
Beispiel mit random Farben für den Fall "zu dunkel" anbei.
Winni
Der BGRA-Filter Normalize hat nix mit Weissabgleich zu tun.
Er untersucht, ob der gesamte Farbraum ausgenutzt wird, also pro Kanal von 0..255
3 Beispiele, bei denen das nicht der Fall ist:
* Das Bild ist zu dunkel. Nur z.B. 0..127 genutzt.
* Das Bild ist zu hell. Nur z.B. 128..255 genutzt.
* Das Bild hat zu wenig Kontrast. Nur z.B. 64 .. 192 genutzt.
In all diesen Fällen spreizt BGRA.InplaceNormalize auf volle 0..255.
Beispiel mit random Farben für den Fall "zu dunkel" anbei.
Winni
- Dateianhänge
-
- BGRAnormalize.png (63.02 KiB) 5246 mal betrachtet
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bitmap unterschiedlich Linux und Windows
Danke für die Info, gehört eigentlich in die WIki
Generell sind die Filter etc. nicht wirklich beschrieben, oder habe ich da was nicht gefunden.
Also gibt es keinen Filter der einen Weissabgleich macht. Ok auch gut.

Also gibt es keinen Filter der einen Weissabgleich macht. Ok auch gut.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).