【发布时间】:2012-08-08 05:20:56
【问题描述】:
我想提取容器中的中心线像素。起初,我使用 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 中编写代码来解决以下问题” 对于容器内的一点,对应于最大的特征向量 特征值垂直于边缘,对应于最小特征值的特征值指向沿血管的方向。
圆上方向变化最大的前两个连续向量被视为反映血管边界的像素。跟踪方向上的点被认为是后续圆的中心。重复这个过程给出了血管边界的估计。
如上所述,我将如何计算 Hessian 矩阵的最大特征值及其对应的特征向量来选择新的种子点。
感谢您的回复。我使用 eig2image.m 来查找图像上每个点的特征向量(在我的图像中,同心圆区域上有灰度值,背景为黑色)。
[Lambda1,Lambda2,Ix,Iy]=eig2image(Dxx,Dxy,Dyy)
其中 Ix 和 Iy 是最大的特征向量。
但是当我尝试使用以下方法绘制特征向量时:
quiver(Ix, Iy)
我还可以看到黑色背景上的向量应该为零!!
您能否回答我如何在图像顶部绘制特征向量。
【问题讨论】:
标签: image algorithm matlab image-processing hessian-matrix