INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Problem beim Verwenden von 2D Arrays



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.03.2008, 22:22
Beitrag #27

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Problem beim Verwenden von 2D Arrays
Ich hab mir mal Gedanken gemacht.

Das Ergebnis ist der Delphicode - siehe unten. Er entspricht (im ersten Schritt) dem, was ich oben geschrieben habe: Bild = 1000*1000; Quadrat=11*11 (5*2+1=11); Mittelwert=1000*1000; Demnach wäre der Kontrast auch 1000*1000. Dabei ist mir ein Problem aufgefallen: Wie sieht das Mittelwertfenster (= das Quadrat) am Rande des Bildes aus. Am Punkt (0,0) kann man kein Mittelwertfenster der Größe 11x11 machen. Der Punkt (0,0) kann in keinem Fenster in der Mitte liegen. Demnach kann das Fenster um den Punkt (0,0) nur die Breite 1 haben, also den Punkt selbst. Diese Überlegung gilt für alle Punkte, die näher als 5 am Rand liegen. Durch diesen Sachverhalt erschwert sich die Berechung (respektive der Algorithmus) erheblich. Diese Überlegung hab ich in meinen Code mal außen vor gelassen. Verstehst du meine Überlegung?

Ein weiterer Punkt ist mir aufgefallen. Dein geposteter VI-Code bewirkt doch folgendes: Bild=1000x1000; Fenster=10x10; Kontrast=100x100 wegen Schleifenzähler = Länge div Fenster = 1000 div 10. Demnach ergibt dein LV nicht für jeden Bildpunkt einen Kontrastpunkt, sondern für jedes Bildfenster ergibt sich ein Kontrastpunkt. Ist das so gewollt respektive so richtig?

Hier mal der Code in Delphi. Den kann man - also du - mit etwas Überlegung nach C++ wandeln. Dieser Code, der erheblich mehr macht als dein LV-Code, braucht circa 600ms. Das liegt am beschriebenen "Gleitenden Mittelwert". Bild[] und Mittelwert[] sind dabei 2D-Arrays. Das sieht man daran, dass eben mittels zweier Schleifen über den Pointer zugegriffen wird. Es ist also ausreichend, einen "Datenzeiger" an die DLL zu übergeben.

[code]const BRows: cardinal = 1000;

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Problem beim Verwenden von 2D Arrays - IchSelbst - 05.03.2008 22:22

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler 1097 beim Übergeben von Arrays Flemmy 4 10.292 22.10.2017 21:07
Letzter Beitrag: rolfk
  Problem beim Einbinden einer DLL preacha 18 19.343 25.09.2008 11:51
Letzter Beitrag: baliik

Gehe zu: