[問題] 請教影像處裡的中間值濾波已回收

看板MATLAB作者 (哈囉!!!請跟我哈囉)時間15年前 (2010/10/10 19:43), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
小弟最近在修機器視覺 這次作業要弄平均濾波跟中間值濾波 分別對圖片做處裡,來消除雜訊 平均值濾波我剛剛做好了 可是做中間值濾波的時候,不太知道哪裡錯了 應該是說 我有去上網查中間值的指令median 可是我不知道怎樣取中間值,講的有點含糊,抱歉 麻煩請前輩幫我看看 這是3*3的中間值濾波 MYHW233=imread('路徑'); ↑ 這是我設的名稱 這邊是灰階化 rgb2gray_MYHW233=rgb2gray(MYHW233); figure=imshow(rgb2gray_MYHW233); as1=double(rgb2gray_MYHW233); [w,h] = size (rgb2gray_MYHW233); median_filter_MYHW233 = zeros(w,h); for i=2:w-1 for j=2:h-1 sum=0; for k = -1 : 1 for l = -1 : 1 sum = sum + as1 (i+k,j+l); ←這行是我在做平均濾波完後的 end 我不知道怎樣去修改才對 end 我知道我寫的這個是錯的 median_filter_MYHW233(i,j)=median(sum); 因為這樣sum加起來很大, end 直接白掉!! end mean_filter_MYHW233 = uint8 (median_filter_MYHW233); figure;imshow(median_filter_MYHW233); 我覺得不應該用sum,sum是總和的意思,這樣一定會變成作平均才會用到 想請問一下有沒有"陳列"的這種指令? 這樣我median(陳列指令)是不是就可以找到中間值!? 可是我上網看的時候,它網站寫的基本指令 只有列陳列或行陳列,這樣沒有辦法把矩陣所有的灰階值做排列!!! 這是我的疑問@@拜託各位幫幫忙了ˊˋ -- ╔══╗ 誓死與女王 by jimmy508 ◤◥ ▅█▅▄▃▂ █▆▆▅▃ ║ ║ ★ 對抗小黃瓜   █ ▊ █ ║ ╔═╗ ╭═╮ □- ◣◥▄█ ▉ ▊ ▆█▃ ╚══╗ ║ ║ │ │ ◢ ◥ ◥▅█▅ █ ║ ║ ║ │ │ ◢▅▅▅▅▅▃▃ ▊ █▇██▅▄ ╚══╝ ║ ╚═╝ \_人 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.68.68 ※ 編輯: wade0222 來自: 114.37.68.68 (10/10 19:56) ※ 編輯: wade0222 來自: 114.37.68.68 (10/10 20:03)

10/10 20:47, , 1F
不要用sum做為自訂變數名稱 sum在matlab中已經是一個指令
10/10 20:47, 1F

10/10 20:49, , 2F
排列的話 sort 或 sortrows 試試看
10/10 20:49, 2F
我剛把指令 sum = sum + as1 (i+k,j+l); 修改為 sort = sum + as1 (i+k,j+l); median_filter_MYHW233(i,j)=median(sum); 修改為 median_filter_MYHW233(i,j)=median(sort); 跑出來的影像是有了,也有好一點 可是跟我學校的助教弄得3*3中間值濾波的圖差很多 我剛弄出來的圖對比不是很明顯 我改成5*5的,感覺沒什麼差。 有點怪怪的,請前輩指導一下了!!!感謝 ※ 編輯: wade0222 來自: 114.37.68.68 (10/10 21:56) 我剛剛也上網有找了資料跟查了一下書 我有看到sort這個指令,可是他只能對矩陣作行向量的小到大排列 整個矩陣的數值排列,找書都沒看到 我想應該是沒有這個指令!!! 請問是不是要利用一些數學運算去導出中間值? ※ 編輯: wade0222 來自: 114.37.68.68 (10/10 22:01)

10/10 22:52, , 3F
題外話 中值濾波指令 medfilt2 網路找的 我沒try過
10/10 22:52, 3F

10/12 22:37, , 4F
I = medfilt2(img,[5 5])
10/12 22:37, 4F
文章代碼(AID): #1CiQRNUp (MATLAB)