2016-12-22 4 views
0

私は50x50グレースケール画像のヘッセ行列の行列式を見つけようとしています。私が得る行列の決定子は非常に小さい値、すなわち4.7612e-134です。私は何かが足りないと思う。私のコードは以下の通りです。おかげでグレースケール画像のヘッセ行列の決定子がmatlabで小さすぎます

% 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

タイプミスかもしれないが、それは場所に代わりgxy' 'の' 'gyx'すべきではない[2 、1] '?私はそれが何かを変えるかどうか分かりません –

+0

gyxとgxyは同じ値を持っているので、アリの違いはありません。 – tayyyab

答えて

0

私はあなたがヘッセそれを呼び出すようにしたい場合は、100x100行列を組み立てる必要があるとは思いません。デリバリをサンプリングする50x50(2500)ピクセルごとに、代わりに2x2行列を組み立てます。ここ

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

2500の2x2行列として表さ:

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

、これらはそれぞれ2x2行列の決定因子である:

これら

2500のヘッセ行列であり、 2500x4マトリックス中で発現
D = H(:,1).*H(:,4) - H(:,2).*H(:,3) 

ここでは各画素におけるヘッセの行列式と50x50行列、それはあなたが後にしているものです場合:

reshape(D, 50, 50) 
+0

お返事ありがとうございます。上のコマンドを実行した後、私はH(625 x 4)、H(2 x 2 x 625)、D(625 x 1)を得ました。私は50×50に再構成したくないのですが、単一の値の決定要因が必要です。ありがとう – tayyyab

関連する問題