Re: [討論] 請問LAPLACE的遮罩銳化已回收

看板MATLAB作者 (雁)時間15年前 (2011/01/15 02:26), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《wade0222 (熱火一哥)》之銘言: : 這個遮罩矩陣是[-1 -1 -1 : -1 9 -1 : -1 -1 -1] : %拉普拉斯 : g_output=zeros(h,w); : for i=2:h-1 : for j=2:w-1 : sum=0; : for m=-1:1 : for n=-1:1 : if m==0 & n==0 : sum; : else : sum=sum+as1(i+m,j+n); <==這行我的理解是把遮罩大小 : end 做出來的意思 : end : end : g_output(i,j)=9*as1(i,j)-sum; <==這行,我不理解 : end 我覺得應該是寫出遮罩中間9的意思 : end 但是不懂為什麼要-sum : 不懂哪裡有做出周圍的-1 : 請前輩教教我這個迴圈到底要怎麼看@@拜託了 : 感謝!! 我想你應該知道遮罩是怎麼運算的, 就是乘上遮罩各對應位置的係數後加總,所以 針對第一個問題, sum=sum+as1(i+m, j+n); 這行就是把遮罩-1的部份加起來, 但是注意這裡它加起來是正數. 而g_output(i,j)=9*as1(i,j)-sum; 可以看成g_output(i,j)=9*as1(i,j)+(-sum); 這裡的-sum就是個負數了, 這樣應該明白了吧. 我稍微改寫一下程式,跟原程式是做同樣的事情,看這樣你會不會比較清楚 g_output = zeros(h,w); Mask = [-1,-1,-1; -1,9,-1; -1,-1,-1]; %宣告一個遮罩 for i = 2 : h-1 for j = 2 : w-1 sum = 0; for m = -1 : 1 for n = -1 : 1 %下面這行是as1裡的元素值各自乘上遮罩裡相對應位置的係數, %然後加總 sum = sum + as1(i+m,j+n)*Mask(m+2,n+2); end end g_output(i,j) = sum; end end -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.3.97

01/15 06:18, , 1F
感謝
01/15 06:18, 1F

01/15 06:23, , 2F
還有個問題請教一下,我還是不懂一個地方
01/15 06:23, 2F

01/15 06:28, , 3F
為什麼要多減掉sum 遮罩中心不是9嗎? 抱歉,基礎不好
01/15 06:28, 3F

01/15 06:28, , 4F
請前輩教導一下,感謝
01/15 06:28, 4F

01/15 06:52, , 5F
這程式是你寫的嗎?
01/15 06:52, 5F
※ 編輯: james1022jk 來自: 114.38.8.31 (01/15 07:03)

01/15 15:02, , 6F
不是我寫的,是一個學長寫給我,我在研究@@
01/15 15:02, 6F

01/15 15:05, , 7F
我大概了解了!!!感謝前輩教導
01/15 15:05, 7F
文章代碼(AID): #1DC9L46y (MATLAB)
文章代碼(AID): #1DC9L46y (MATLAB)