matlab图像中值滤波(自己写的小程序)

Nancy_9820 2014-03-27 01:33:11
function OutImg = medfilter(InputImg,n)
%函数中n:表示使用的是n*n的矩阵进行均值滤波
%InputImg:为二值图像。
[HEIGHT WIDTH DEPTH] = size(InputImg);%HEIGHT*WIDTH:输入图像的大小
OutImg = InputImg;
for height = 1:HEIGHT-n+1
for width = 1:WIDTH-n+1
Tmp = InputImg(height:height+(n-1),width:width+(n-1));
MedTmp = medVal(Tmp);
OutImg(height+(n-1)/2,width+(n-1)/2) = MedTmp;
end
end
end


function med = medVal(M)
%M: 要求中值的输入矩阵
%med:返回的矩阵中值
[n m ndepth] = size(M);
for i = 1:n
e = M(1,:);
for u = 2:n
e = [e,M(u,:)];
end
end
for j = 1:m*n-1
for i = 1:n*m-1
if e(i+1)<e(i)
buf = e(i+1);
e(i+1) = e(i);
e(i) = buf;
end
end
med = e((n*m+1)/2);
end
end


这个程序是我自己写的matlab图像中值滤波的小程序,能运行,可是运行的速度大概是matlab自带中值滤波的运行时间是:0.083791,可是我的程序运行完的时间是:56.0099,这根本就不是一个数量级的啊,运行速度实在是慢,求解,怎么解决这个问题,提高我程序的运行速度。
...全文
597 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2014-03-27
  • 打赏
  • 举报
回复 1
1.要么用matlab自带的函数 2.自己要写也要用块处理函数来提速,不要多重循环 matlab最忌讳的就是循环,要尽量向量化操作

4,447

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧