AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bitmap in SW umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap in SW umwandeln

Ein Thema von DocZenith · begonnen am 8. Feb 2006 · letzter Beitrag vom 13. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
DocZenith

Registriert seit: 8. Feb 2006
27 Beiträge
 
#11

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 15:55
@ 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?

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

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 16:43
Zitat von DocZenith:
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.
Hi,

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
Angehängte Dateien
Dateityp: zip mauer_schwarzweiss_117.zip (3,0 KB, 23x aufgerufen)
Felix Alter
  Mit Zitat antworten Zitat
DocZenith

Registriert seit: 8. Feb 2006
27 Beiträge
 
#13

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 17:59
@ 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.
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#14

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 18:16
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 ...
Markus
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#15

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 18:25
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
  Mit Zitat antworten Zitat
DocZenith

Registriert seit: 8. Feb 2006
27 Beiträge
 
#16

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 18:43
@ 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.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#17

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 18:49
Zitat von markusj:
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).
Das ist doch nichts anderes als 1-Bit-Kodierung.

@DocZenith: Kann denn nicht schon der Server (oder wer auch immer an die Cam geschaltet ist) das Bild auswerten?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
DocZenith

Registriert seit: 8. Feb 2006
27 Beiträge
 
#18

Re: Bitmap in SW umwandeln

  Alt 12. Feb 2006, 20:38
@ 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.
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#19

Re: Bitmap in SW umwandeln

  Alt 13. Feb 2006, 09:09
@Khabarakh

Ja, und SW ist meines erachtens nach eine 1Bit kodierung ...
siehe: BMP-Fileformat@daubnet
(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!!!!
Markus
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: Bitmap in SW umwandeln

  Alt 13. Feb 2006, 16:16
Zitat von markusj:
@Khabarakh

Ja, und SW ist meines erachtens nach eine 1Bit kodierung ...
Und darum dreht sich das Thema schon seit dem ersten Post, deswegen verstehe ich nicht, warum du es als andere Möglichkeit anpreist.

@DocZenith: Schade, wäre auch zu einfach gewesen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:10 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