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

看板MATLAB作者 (我...)時間16年前 (2009/07/22 21:28), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
請改使用 repmat reshape 不然你不是等到老 就是等不完 ※ 引述《chming (...)》之銘言: : 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: 114.32.50.10

07/23 14:27, , 1F
不好意思 我還是不太懂 可以說明詳細一些嗎 感謝
07/23 14:27, 1F
文章代碼(AID): #1APnGIJN (MATLAB)
文章代碼(AID): #1APnGIJN (MATLAB)