matlab 5*5 smooth濾波(平滑) |
|
zet0r
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2006-08-15 發送簡訊給我 |
想請問依下, 我再寫3*3的平滑濾波時候, 成功了,
但是當我在做5*5的時候, rgb三色做不出來... 如果我把第三層不理他, 只做二維的濾波, 雖然變成gray, 但是卻成功.. 想請問依下為什麼會這樣, 程式給我的原因是說, 索引超出範圍. 不曉得有沒有大大可以幫我解答依下. 這邊我是用filter=zeros(1,25); 我用zeros(5,5)也不行... 謝謝大家幫忙!!!! clear all, close all; [x,map]=imread('F:\My Documents\3-18.jpg'); figure(1), imshow(x); %make 1 figure to show image. m=double(x); [x,y,z]=size(m); r=zeros(x,y,z); filter=zeros(1,25); for i=3; for o=3:x-2; for p=3:y-2; filter(1)=m(o-2,p-2,i); filter(2)=m(o-1,p-2,i); filter(3)=m(o,p-2,i); filter(4)=m(o 1,p-2,i); filter(5)=m(o 2,p-2,i); filter(6)=m(o-2,p-1,i); filter(7)=m(o-1,p-1,i); filter(8)=m(o,p-1,i); filter(9)=m(o 1,p-1,i); filter(10)=m(o 2,p-1,i); filter(11)=m(o-2,p,i); filter(12)=m(o-1,p,i); filter(13)=m(o,p,i); filter(14)=m(o 1,p,i); filter(15)=m(o 2,p,i); filter(16)=m(o-2,p 1,i); filter(17)=m(o-1,p 1,i); filter(18)=m(o,p 1,i); filter(19)=m(o 1,p 1,i); filter(20)=m(o 2,p 1,i); filter(21)=m(o-2,p 2,i); filter(22)=m(o-1,p 2,i); filter(23)=m(o,p 2,i); filter(24)=m(o 1,p 2,i); filter(25)=m(o 2,p 2,i); r(o,p,i)=sum(sum(filter))/25; end end end r=uint8(r); figure(2),imshow(r); BW=im2bw(r,0.1); figure(4), imshow(BW); |
zet0r
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2006-08-15 發送簡訊給我 |
找到問題所在了!
上面程式有錯誤, 剛剛檢查發現找到了, 我的i沒設定好, 所以只會跑藍色... 現在已經更正為for i=1:3; 索引不夠的問題, 我到matlab去找, 好像是說我用的是6.x版本, 7的版本有修正過, 我只要加上去一串指令即可. %/////////////////////////////////////////// % Create an arbitrary TrueColor image matrix, and normalize it img=repmat(magic(250),[1 1 3]); imgi=img/max(img(:)); % Resize the image % Notice the last argument, which specifies that we avoid filtering imgo=imresize(imgi,[180,180],'bilinear',0); % Show the results disp(sprintf('Input min = %g. Input max = %g.',min(imgi(:)),max(imgi(:)))) disp(sprintf('Ouput min = %g. Output max = %g.',min(imgo(:)),max(imgo(:)))) %/////////////////////////////////////////// 以下是更改過可以用的, clear all, close all; [x,map]=imread('F:\My Documents\3-18.jpg'); figure(1), imshow(x); %make 1 figure to show image. m=double(x); [x,y,z]=size(m); r=zeros(x,y,z); filter=zeros(1,25); for i=1:3; for o=3:x-2; for p=3:y-2; filter(1)=m(o-2,p-2,i); filter(2)=m(o-1,p-2,i); filter(3)=m(o,p-2,i); filter(4)=m(o 1,p-2,i); filter(5)=m(o 2,p-2,i); filter(6)=m(o-2,p-1,i); filter(7)=m(o-1,p-1,i); filter(8)=m(o,p-1,i); filter(9)=m(o 1,p-1,i); filter(10)=m(o 2,p-1,i); filter(11)=m(o-2,p,i); filter(12)=m(o-1,p,i); filter(13)=m(o,p,i); filter(14)=m(o 1,p,i); filter(15)=m(o 2,p,i); filter(16)=m(o-2,p 1,i); filter(17)=m(o-1,p 1,i); filter(18)=m(o,p 1,i); filter(19)=m(o 1,p 1,i); filter(20)=m(o 2,p 1,i); filter(21)=m(o-2,p 2,i); filter(22)=m(o-1,p 2,i); filter(23)=m(o,p 2,i); filter(24)=m(o 1,p 2,i); filter(25)=m(o 2,p 2,i); r(o,p,i)=sum(sum(filter))/25; end end end r=uint8(r); figure(2),imshow(r); BW=im2bw(r,0.7); figure(4), imshow(BW); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |