ich möchte die Autocorrelation von einem Bild mit sich selbst durchführen.
Und anschließend einen Gauß-Filter darüberlegen um SpeckleGrößen zu ermitteln.
%Bild wird eingelesen und in uint8 umgewandelt, anschließend zugeschnitten
%damit möglichst viel schwarze Fläche verschwindet.
Raw_Img=SpeckleRGB;
Raw_Img=uint8(Raw_Img);
Raw_Img=imcrop(Raw_Img, [115100115115]);
M=size(Raw_Img,1); %Höhe des Bildes
N=size(Raw_Img,2); %Breite des Bildes
B=rgb2gray(Raw_Img); %Wandelt es in Graustufenbild=B um
B=double(B); %Wandelt die Werte in double um
E=B(1,:); %Erstellt ein Array mit den Werten von Reihe 1
s=size(xcov(E)); %Ermittelt die Größe des autocovariance Arrays
D=zeros(s); %Erstellt ein leeres Array der Größe s
D=double(D); %Wandelt die Werte in double um
for i=1:M;
C=B(i,:);
D=imadd(D,xcov(C,'coeff')); %Summiert die autocovariance Arrays für alle Reihen in D auf
end;
H=(D/max(D)); %the finished horizontal product, H, is normalized
%H wird mit Gauss gefitted und die Fläche der Speckles wird aus den Fits
%ermittelt
%H isfit to Gaussians and the speckle sizeis extracted from the
%fits.
excludeLowH = excludedata(helper1',H','range',[.2,1]); %excludes the noise from outside the speckle
optionsH = fitoptions(gauss1);
optionsH.Exclude = excludeLowH;
%Führt den Fit durch
[HFit] = fit(helper1',H',gauss1, optionsH);
%The SpeckleSize code technically does not find the FWHM and 1/e2 widths of
%the Gaussian fits, but rather the widths at which the Gaussians fall to
%values of .5 and 1/e^2. This provides a better idea of the speckles size
%even when the Gaussians amplitude is not unity, as expected for a perfect
%fit of the normalized data, but can produce unexpected trends...
HFWHM = (2*(HFit.c1)*sqrt(-log(.5/(HFit.a1)))); %FWHM values (Full width when the fit = .5)
Kann mir jemand sagen, was die Funktion
optionsH = fitoptions(gauss1); macht?
Auch verwendet er : [HFit, HFitStats] = fit(helper1',H',gauss1, optionsH);
Wozu ist HFitStats gut? Habe das einfach weggelassen.
Meine Ergebnisse von den Bildern passen nicht wirklich zur Theorie.
Habe ich etwas falsch gemacht?
Danke schonmal für die Hilfe
Gruß
Hans
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.