2016-12-22 14 views
0

Ich versuche Determinante der hessischen Matrix eines 50x50 Graustufenbildes zu finden. Determinante der Matrix, die ich erhalte, ist ein sehr kleiner Wert, d. H. 4.7612e-134. Ich denke, ich vermisse etwas. Mein Code ist unten. DankDeterminante der hessischen Matrix eines Graustufenbildes ist in Matlab zu klein

% computing second derivatives in each direction first 

[gx, gy] = gradient(double(sliceOfImageK2)); 

[gxx, gxy] = gradient(gx); 

[gyx, gyy] = gradient(gy); 

hessianMatrix = [gxx gxy; gxy gyy]; 

determinantHessianMatrix = det(hessianMatrix) 
+0

ein Tippfehler sein könnte, aber es sollte nicht 'statt' gxy' an der Stelle gyx' werden '[2 , 1] '? Ich habe keine Ahnung, ob das irgendwas ändern wird. –

+0

gyx und gxy haben gleiche Werte, also macht es keinen Unterschied. – tayyyab

Antwort

0

Ich glaube nicht, sollten Sie eine 100x100 Matrix montieren, wenn Sie es hessischen anrufen möchten. Montieren Sie stattdessen eine 2x2 Matrix für jeden der 50x50 (2500) Pixel, wo Sie Ihre Derivate abtasten.

Dies sind die 2500 Hessians, ausgedrückt in einer 2500x4 Matrix:

H = [gxx(:) gxy(:) gyx(:) gyy(:)] 

Hier als 2500 2x2 Matrizen ausgedrückt:

H_ = reshape(H', 2, 2, length(H)) 

Und das sind die Determinanten der einzelnen 2x2 Matrix:

D = H(:,1).*H(:,4) - H(:,2).*H(:,3) 

Hier als eine 50x50 Matrix mit der Determinante des Hessischen an jedem Pixel, wenn es das ist, was Sie nach:

reshape(D, 50, 50) 
+0

Danke für die Antwort. Nach dem Ausführen der obigen Befehle bekam ich H (625 x 4), H_ (2 x 2 x 625) und D (625 x 1). Ich will es nicht in 50 x 50 umformen, sondern ich möchte eine Einzelwertdeterminante. Vielen Dank – tayyyab

Verwandte Themen