gpt4 book ai didi

image - Hessian 矩阵的特征向量和特征值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:16 27 4
gpt4 key购买 nike

我想提取血管中的中心线像素。起初我使用 ginput(1) 命令选择了靠近容器边缘的种子点。这提供了起点并指定了需要执行分析的血管段上的感兴趣区域 (ROI)。

figure; imshow(Igreen_eq); % Main green channel Image
p = ginput(1);

然后将选定的种子点作为直径小于血管预期直径的圆的圆心,以使圆不与对边相交。

t = 0:pi/20:2*pi;
d = 0.8*15; %d=80% of minwidthOfVessel so that it wont intesect with opposite edge;
R0=d/2;%radius
xi = R0*cos(t)+p(1);
yi = R0*sin(t)+p(2);
line(xi,yi,'LineWidth',2,'Color',[0 1 0]);
roimask = poly2mask(double(xi), double(yi), size(Igreen_eq,1), size(Igreen_eq,2));
figure; imshow(roimask) % Binary image of region selected
Itry = Igreen_eq;
Itry(~roimask ) = 0;
imshow(Itry);
Itry = im2double(Itry);
line(xi, yi,'LineWidth', 2, 'Color', [0 1 0]);
hold on; plot(p(1), p(2),'*r')

问题:要计算该圆周上的光强度的 Hessian 矩阵,并且必须获得特征向量。 我使用以下方法计算了 Dxx、Dyy、Dxy:

[Dxx,Dxy,Dyy] = Hessian2D(Itry,2); %(sigma=2)

我需要在 MATLAB 中为以下问题编写代码"对于容器内的一个点,对应于最大的特征向量特征值垂直于边缘,对应于最小特征值的特征值指向沿血管的方向。

圆上方向变化最大的前两个连续矢量被视为反射(reflect)血管边界的像素。跟踪方向上的点被认为是后续圆的中心。重复这个过程给出了血管边界的估计。

如上所述,我将如何计算 Hessian 矩阵的最大特征值及其对应的特征向量以选择新的种子点。


感谢您的回复。我已经使用 eig2image.m 找到图像上每个点的特征向量(在我的图像中,同心圆区域上有灰度值,背景为黑色)。

[Lambda1,Lambda2,Ix,Iy]=eig2image(Dxx,Dxy,Dyy)

其中 Ix 和 Iy 是最大的特征向量。
但是当我尝试使用以下方法绘制特征向量时:

quiver(Ix, Iy)

我还可以看到黑色背景上的向量应该为零!!

能否请您回复我如何在图像顶部绘制特征向量。

最佳答案

假设 Dxx, Dyy, Dxy 是维度 size(Itry) 的二阶偏导数矩阵,那么对于给定的点 (m,n) Itry 中你可以这样做:

H = [Dxx(m,n) Dxy(m,n); Dxy(m,n) Dyy(m,n)];
[V,D] = eig(H); % check by H*V = V*D;
eigenVal1 = D(1,1);
eigenVal2 = D(2,2);
eigenVec1 = V(1,:);
eigenVec2 = V(2,:);

此局部特征分解将为您提供特征值(和相应的特征向量),您可以根据大小对其进行排序。您可以遍历图像点或更紧凑的解决方案,请参阅 eig2image.m在 FileExchange 中。

关于image - Hessian 矩阵的特征向量和特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com