AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Noobfragen zu Grafiken und Pixeln

Ein Thema von dasbinich · begonnen am 18. Dez 2007 · letzter Beitrag vom 18. Dez 2007
Antwort Antwort
dasbinich

Registriert seit: 10. Jul 2007
6 Beiträge
 
Delphi 3 Standard
 
#1

Noobfragen zu Grafiken und Pixeln

  Alt 18. Dez 2007, 14:54
Vorerst eine Bitte, bewerft mich nicht mit zusammenhangslosen Syntaxbruchstücken wie ich sie schon zig Mal in der Hilfedatei und anderen Threads gesehen habe. Ich hab noch nicht so viel Erfahrung damit, dass ich die auf den ersten(und auch nicht auf den zweiten) Blick richtig verwenden kann.

Mein Ziel ist ein Programm zu schreiben, dass ein Interferenzmuster(z.B: im Anhang) automatisch auswertet. Dazu mache ich folgendes:
ich speichere erstmal jeden Pixel in ein Array(mag sein, dass es elegantere Möglichkeiten gibt, aber für mich ist es so greifbarer)
dann fasse ich je 2 bis 3 pixelzeilen(je nach auflösung) zusammen(ich addiere die Helligkeiten) um kleine Fehler zu "verwischen"
Ich suche das hellste Zeilenpaar/tripel um das eigentliche Beugungsbild zu finden
ich rechne mit dem vorherigem ergebnis und gehe das Array von links nach rechts durch und suche die Maxima/Minima indem ich schaue ob die zahlen kleiner werden(nach einem hochpunkt) oder größer(nach einem tiefpunkt)
mit etwas trigonometrie kann ich mir das nötige berechnen lassen.(vorerst gebe ich das maßstab manuell ein, aber wenn der Rest funktioniert lege ich noch nen Schwarzen 1-cm-Streifen vertikal daneben und dann sollte auch die automatische umrechnung funktionieren)


Und jetzt die Fragen:
1) wie lade ich eigentlich ein Bild, sodass ich es verwenden kann, muss ich dazu was in der variablendeklaration hinschreiben oder ein Image/Paintbox im Formular einfügen? (verzeichnis: C/Bilder/beispiel.bmp)
2) wie kann ich die Farbe/Helligkeit eines pixels abfragen und was für einen wert bekomme ich raus? Kann ich für die Heligkeit einfach den Mittelwert der RGB-werte bilden? (Weiss hat ja die maximalen R,G und B-zahlen, reicht es dann, wenn ich beim fotografieren den schirm in den schatten stelle, oder braucht man völlige dunkelheit, weil Grau ja nur etwas dunkleres Weiss ist)
3) gibt es einen einfachen Syntax-Befehl um einen array durch eine funktion anzupassen und deren Hoch/Tiefpunkte zu bestimmen, oder wären es eigenständige komplizierte Programme?


Hier mal der Quelltext, einige Variablen hab ich provisorisch deklariert, und sonst auf das wesentliche gekürzt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,i,j,k: integer;
R,G,B: double;
ar: array [1..800,1..600] of double;
ysum: array [1..600] of double;
zeile: array [1..598] of double;
Image1: Tpicture;
begin
Image1.LoadFromFile('beugung.bmp');
begin
for y:=1 to 600 do
   begin
   for x:=1 to 800 do
      begin
       ar[x,y]:=getRvalue(canvas.pixels[x,y]);
      end;
   end;
end;

//hier bilde ich die summe der pixel einer zeile
begin
ysum[i]:=0;
for i:=1 to 600 do
   begin
   for j:=1 to 800 do
      begin
      ysum[i]:=ysum[i]+ar[i,j];
      end;
   end;
end;

//und hier werden je 3 zeilen zu einer zusammengefasst
begin
for k:=1 to 598 do
zeile[k]:=ysum[k]+ ysum[k+1]+ ysum[k+2]

end; end;

end.
Ich weiss, es ist noch nicht ganz fertig, aber bisher funktioniert nicht mal das, Delphi schafft es zwar das erfolgreich zu compilieren, aber wenn ich es über delphi starte bekomme ich eine "Stack-Overflow" Meldung und wenn ich die .exe starte wird das Fenster einfach geschlossen und nichts passiert.

Optimierungsvorschläge zum Prinzip der Auswertung sind erwünscht und werden nach möglichkeit umgesetzt.
Miniaturansicht angehängter Grafiken
beispiel_120.jpg  
1|= y()u (4|| r3@d 7#][5, y0|_| / 3 @ IVI0//$+3|2 &33|<
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Noobfragen zu Grafiken und Pixeln

  Alt 18. Dez 2007, 20:08
1)
Du musst Objekte instanzieren, bevor du sie benutzen kannst.

Falsch:
Delphi-Quellcode:
Image1: Tpicture;
begin
Image1.LoadFromFile('beugung.bmp');
...
Richtig:
Delphi-Quellcode:
Image1: TBitmap;
begin
  Image1 := TBitmap.Create;
  try
    Image1.LoadFromFile('Pfad?/beugung.bmp');
    for y := 1 to 600 do
      ...
  finally
    FreeAndNil (Image1);
  end;
  ...
2)
Benutz mal die Foren-Suche, da müßte es schon einiges geben

3)
Hä? ^^
Delphi-Quellcode:
var
  min, max: Integer;

min := MaxInt;
max := 0;
for a := 0 to X do
  begin
    if (Array[a] > max) then
      max := Array[a];
    if (Array[a] < min) then
      min := Array[a];
  end;
Sowas?
  Mit Zitat antworten Zitat
Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#3

Re: Noobfragen zu Grafiken und Pixeln

  Alt 18. Dez 2007, 20:17
Wenn du dann alles Programmiertechnische zum Auswerten der Abstände fertig hast, dann kannst du ja dann noch eine Lineare Regression zu schreiben, mit graphischer Darstellung und Ausgabe der Geraden, Fehler und des Korrelationskoeffizienten. Ich glaube dann würden dir viele Physik-Erstsemestler, die nicht mit Orign umgehen können, dankbar sein
Kommt ein Nullvektor zum Psychiater: "Herr Doktor, Herr Doktor ich bin so orientierunglos."
Mitglied der anonymen Algebraabhängigen
  Mit Zitat antworten Zitat
Antwort Antwort


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 13: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