我想提取容器中的中心線像素。起初,我使用ginput(1)命令在接近血管邊緣處選擇了一個種子點。這提供了起點並指定了需要執行分析的船隻段上的感興趣區域(ROI)。Hessian矩陣的特徵向量和特徵值
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代碼爲下面的問題」 對於容器內的一個點,對應於最大 特徵值特徵向量是正常的邊緣和那些對應於最小特徵值的點指向沿着血管的方向
方向上具有最大變化的圓上的前兩個連續向量被認爲是反映血管邊界的像素,跟蹤方向上的點是作爲後續小組的中心。重複這一過程g提供船隻邊界的估計。
如何計算Hessian矩陣的最大特徵值及其相應的特徵向量,以便如上所述選擇新的種子點。
感謝您的回覆。我使用eig2image.m來查找圖像上每個點的特徵向量(在我的圖像中,同心圓區域上有灰度值,背景爲黑色)。
[Lambda1,Lambda2,Ix,Iy]=eig2image(Dxx,Dxy,Dyy)
其中Ix和Iy是最大的特徵向量。
但是當我嘗試使用繪製特徵向量:
quiver(Ix, Iy)
我還可以看到在黑色的背景應該是零向量!
你可以請回復我怎麼能在圖像的頂部繪製特徵向量。
感謝您的回覆。我用過eig2image。(在我的圖像中,在同心圓形區域上有灰度值,背景是黑色的):在圖像上的每個點上找到特徵向量(在我的圖像中,同心圓形區域上有灰度值,背景爲黑色): [λ1,λ2,Ix,Iy] = eig2image(Dxx,Dxy, Dyy) 其中Ix和Iy是最大的特徵向量。 但是當我嘗試繪製使用以下特徵向量: 顫抖(Ix,Iy)。 我也可以在黑色背景上看到應該爲零的向量!! .............. 請問您可以回覆我如何繪製圖像頂部的特徵向量。 – Dev 2012-08-15 17:34:12
這可能有助於繪製矢量和矢量方向覆蓋在圖像上http://stackoverflow.com/questions/10416918 – gevang 2012-08-15 19:20:58
@gevang感謝tipps! 「eig2image」函數輸出與最小特徵值相關的特徵向量的座標([[Ix Iy]),對嗎?如果我們想從最大的「特徵值」中獲得特徵向量怎麼辦? – Tin 2014-02-03 14:58:37