Ich habe eine Matlab Funktion, die ich in C# umsetzen möchte, da ich leider nicht weiß, wie das Ergebnis aussehen muss, kann ich keine Rückschlüsse darauf schließen, wie der untere Code zu interpretieren ist. Es geht um den markierten Teil im Code.
Wie ist dieser zu verstehen?
Wenn bei Matlab irgendwo ein "." (Punkt) steht, bedeutet das soweit ich weiß, diese Operation wird für jeden einzelnen Wert durchgeführt.
Aber was bedeutet bei col_img(:,:,2) die Doppelpunkte? Ist das dann ein Vektor der alle rot Werte enthält?
Wenn ja, heißt das dann das bei Zeile 0047 alle Einzel-Werte der einzelnen Vektoren aufsummiert werden?
0044 r = col_img(:,:,1); // <== von hier
0045 g = col_img(:,:,2);
0046 b = col_img(:,:,3);
0047 int = r + g + b; // <== bis hier
0048
0049 cr = safeDivide(r,int) - hueParams.muR;
0050 cg = safeDivide(g,int) - hueParams.muG;
0051
0052 result = exp(-(cr.^2/hueParams.sigR^2/2 + ...
0053 cg.^2/hueParams.sigG^2/2 - ...
0054 cr.*cg * hueParams.rho/hueParams.sigR/hueParams.sigG));
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo dr4g0n76,
die "bepunkteten" Operatoren bedeuten elementweise:
rand(2) .* rand(2)
multipliziert z.B. die beiden Zufallsmatrizen elementweise.
Der Doppelpunkt indiziert alle Indizes in dieser Dimension:
A = [1, 2, 3; 4, 5,6];
A(:, 2) % Liefert die 2. Spalte (alle Zeilen)
A(1,:) % Liefert die 1. Zeile (alle Spalten)
A(:) % Liefert die Matrix als Vektor (alle Spalten aneinander hängen)
A(:,:) % Liefert die Matrix selbst
Ich nehme an, dass col_img(:,:, k) eine Matrix liefert (Pixel des Bildes) und k den Farbkanal angibt.
In Zeile 0047 werden die Matrizen elementweise zu einer Matrix in der Größe des Bildes addiert.
Viele Grüße,
NeuroCoder