[問題] 可否加速算出矩陣內每列間的距離已回收

看板MATLAB作者 (...)時間16年前 (2009/07/22 21:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
mask = zeros(M, N); TH = 0.007; % 兩列之間距離的門檻值 for j = 1:1:56000-1 for jj = 2:1:56000 %算出兩列之間的距離 (每一列的前兩行為x與y的座標,因此不列入計算) D = sqrt(sum((feature(j, 3:end)-feature(jj, 3:end)).^2)); if D <= TH % 將小於門檻值的兩個區塊都設為1 mask(feature(j, 1):feature(j, 1)+blksize-1,... feature(j, 2):feature(j, 2)+blksize-1) = 1; mask(feature(jj, 1):feature(jj, 1)+blksize-1,... feature(jj, 2):feature(jj, 2)+blksize-1) = 1; end end end imshow(uint8(im.*mask)); 程式說明: 我要找出一張圖相同的部分。先算出每個區塊的特徵值後(blksize為區塊大小), 將所有特徵值放入feature的矩陣中(56000*20,其中列是56000表示有56000個區 塊,每列的第一行與第二行存放該區塊最左上角的座標值x與y,第三行到最後一 行存放18個特徵值),mask大小與測試圖片相同,初始值皆為0,若兩區塊特徵的 距離小於門檻值,則將該區塊所有像素設為1,完成後再將mask與原圖相乘,則 只會顯示出該測試圖片相同的部分。 不知道依照我的想法,這樣撰寫程式對不對?若可以這樣寫,該如何增快此程式 運算的速度呢?這麼大的矩陣每一列每一列去運算,已經花了很多時間在等待上 ,而且我不只有一張圖要測試,請高手救救我一下,該怎麼去修正我的程式。 感謝各位幫助~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.82.28
文章代碼(AID): #1APn5WBk (MATLAB)
文章代碼(AID): #1APn5WBk (MATLAB)