2016-12-22 19 views
0

Я пытаюсь найти определитель матрицы hessian изображения в оттенках серого 50x50. Определитель матрицы, которую я получаю, является очень маленьким значением i.e 4.7612e-134. Я думаю, что чего-то не хватает. Мой код ниже. БлагодаряОпределитель матрицы hessian полутонового изображения слишком мал в 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

может быть опечаткой, но не должен он быть 'gyx' вместо' gxy' на месте '[2 , 1] '? Я понятия не имею, изменит ли это что-нибудь извините –

+0

gyx и gxy имеют одинаковые значения, чтобы он не отличался. – tayyyab

ответ

0

Я не думаю, что вы должны собрать 100x100 матрицу, если вы хотите назвать это Hessian. Соберите вместо этого матрицу 2x2 на каждый из 50x50 (2500) пикселей, где вы отбираете свои производные.

Это 2500 гессианы, выраженное в 2500x4 матрицы:

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

Здесь выражается в виде 2500 2x2 матриц:

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

и эти детерминанты каждой 2x2 матрицы:

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