![]() |
Re: Bitmap in SW umwandeln
@ FAlter:
deine idee ist ok, aber wie bekomm ich das standbild von der webcam, das als graustufen geliefert wird, in ein 1 Bit sw umgewandelt? und was bedeutet bei dir der code bitmap.monochrome := true? :gruebel: wenn ich mein oben angegebenen code bzw. deinen code benutze, hab ich zwar ein 2-farbiges bild, allerdings ist es nicht im 1 Bit Format und es ist im Speicher durchschnittlich 3,6 kb groß. und das bei einem videoformat von 240 x 176 pixel. ich brauch das Standbild unbedingt so klein wie möglich, damit pro sekunde mindestens 1 Standbild über ne 56 k modem leitung verschickt werden kann. @ rantanplan99: du hast recht, yzahl und xzahl brauch ich nicht, und meine variable bildpunkte erfüllt ja den selben zweck wie deine variable graustufen. hab wohl die variable schlecht benannt. |
Re: Bitmap in SW umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
es ist schon 1 Bit, bei 2 Bit wären es schon an die 10 kB. Rechnung mit 1 Bit: Dein Bild hat 240*176=42240 Pixel 1 Bit pro Pixel = 1/8 Byte pro Pixel: 42240/8=5280 Bytes, das sind etwa 5,16 kBytes Rohdaten (!), dazu kommen bei einer BMP-Datei noch zusatzinformationen, die du jedoch nicht mit übertragen musst, wenn beim Empfänger das Format klar ist (Bildgröße, Farbtiefe, Farbpalette (hier S/W), Auflösung (hier eher irrelevant), dass du da im Speicher auf 3,6 kB kommst, ist schon eigenartig... Also bei deiner Bildgröße kannst du nur auf über 5 kB kommen mit 1 Bit Bildern. Oder du verwendest zusätzlich Komprimierung, dann kommst du je nach Bild auf 2 bis 4 kB bei deiner Bildgröße. Das Monochrome setzen bewirkt folgendes: - wandelt das Bild in 1 Bit pro Pixel um (ähnlich wie bei PixelFormat auf pf1Bit setzen), jedoch ohne benutzerdefinierte Schwellenwerte. - passt die Palette so an, dass die beiden Farben schwarz und weiss sind. Meine Procedure Schwarzweiss tut folgendes: Das Bild wird mit 2 Schwellenwerten in SW umgewandelt, wobei ein mittleres Grau durch ein Pixelmuster (Schachbrettmuster) erreicht wird (wenn man weit genug vom Bildschirm weg sitzt und eine niedrige Auflösung eingestellt hat, wirkt es noch besser als grau). Ein Beispielergebnis ist angehangen (gezippt auf weniger als 3 kB). Mfg FAlter |
Re: Bitmap in SW umwandeln
@ FAlter:
Hab eben nochmal die Bildgröße überprüft. Momentan ist das Bild um die 9 kb groß und nicht 3,6kb. aber ich bräuchte halt theoretisch unter 3kb bildgröße, damit das bild schnell mit 56 k verschickt wird. es muss ja nämlich noch an der clientsoftware ausgewertet werden und ein ergebnis zurückgesendet werden. und wenn das zu lange dauert, läuft mein regelungsprozess nicht mehr richtig, der pro bild ausgewertet werden muss. |
Re: Bitmap in SW umwandeln
Noch eine Möglichkeit wäre, wenn du einfach jeden Pixel kontrollierst, und wenn sein Wert > 128 ist, machst du eine 1 und wenn < 128 dann eine 0 (oder umgekehrt, hängt davon ab, was Schwarz und was Weiß ist, das weis ich gerade nicht).
Dann kannst du dieses Array in einen Stream Speichern und hinterher wieder Auslesen. Wenn du ganz ehrgeizig bist, kannst du dir auch entsprechende Prozeduren ausenrum Packen und standartgemäße Bitmaps erzeugen. Ich hab vor ca. 3 Monaten genau das gemacht, eine Unit die ein Bitmap in ein Array lädt und auch wieder speichern kann, allerdings waren das 24-Bit Bitmaps. mfG Markus PS: Egal welchen Weg du nimmst, dein Projekt hört sich sehr Interessant an ... |
Re: Bitmap in SW umwandeln
Hi
zu 56k: Also du weisst schon dass ein 56k Modem diese Geschwindigkeit nur beim Downstream erreicht. Der Upstream ist bei 56k Modems aber auf 33,6k begrenzt. zu den Bilddaten. Warum wertest du die Bilder nicht an dem PC aus an dem du das Bild machst und verschickst nur das Ergebnis der Füllhöhe? Wenn du jedoch das Bild verschicken musst, dann wäre es gut wenn du mehr über das s/w-Bild sagen kannst. Verteilung der Bildpunkte, Höufigkeiten der Farben etc. Dann könnte man besser überlegen welche kompressionsmethode sich da anbietet. Beispielsweise RLE, oder arithmetische Kodierung, oder vielleicht auch ein Algorithmus aus dem Bereich LZW, LZ77, LZ78,... rantanplan |
Re: Bitmap in SW umwandeln
@ rantanplan99:
es geht hier um ein schulprojekt. daher sind die aufgaben so definiert. das bild muss von der serveranwendung erfasst, und zur clientanwendung übers i-net versendet werden. es wird in regelmäßigen abständen per webcam ein standbild eines füllstandes gemacht, das standbild soll ausgewertet werden, ob der füllstand angestiegen ist oder gesunken ist. (dem füllstand wird in unregelmäßigen abständen, unregelmäßige wassermengen hinzugegeben) je nach auswertung der clientsoftware wird ein ereignis ausgelöst (wasser wird dazugepumpt oder abgelassen). daher muss meiner meinung nach mindestens 1 bild pro sekunde ausgewertet werden. und damit das bild schnell verschickt wird, sollte es meiner meinung nach sw sein und so klein wie nur möglich, so dass man es halt noch auswerten kann. hauptsache das bild kommt beim client schnell an. |
Re: Bitmap in SW umwandeln
Zitat:
@DocZenith: Kann denn nicht schon der Server (oder wer auch immer an die Cam geschaltet ist) das Bild auswerten? |
Re: Bitmap in SW umwandeln
@ Khabarakh:
Es geht hier um ein Schulprojekt. die Regeln sind fest definiert. Ein Software soll voll automatisch einen über das internet entfernen Prozess regeln. Also muss die entfernte (client) software die Standbilder auswerten und entsprechende steuersignale zurücksenden. |
Re: Bitmap in SW umwandeln
@Khabarakh
Ja, und SW ist meines erachtens nach eine 1Bit kodierung ... siehe: ![]() (Achtung, das bei 1-Bit Grafik stimmt, aber bei der 24-Bit Grafik ist ein Fehler drinne ...) mfG Markus PS: Es gibt einige gute Seiten zum BMP-Fileformat ... GOOGLE!!!! |
Re: Bitmap in SW umwandeln
Zitat:
@DocZenith: Schade, wäre auch zu einfach gewesen :wink: . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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