如何将这段图像处理算法转化为matlaB代码?

急求matlaB高手将下面的图像处理算法转化为matlaB代码,高分悬赏!... 急求matlaB高手将下面的图像处理算法转化为matlaB代码,高分悬赏! 展开
 我来答
zx198799
推荐于2016-03-03 · TA获得超过1225个赞
知道小有建树答主
回答量:509
采纳率:100%
帮助的人:297万
展开全部


函数代码

function result = smoothedfilter(img)
    result = img;
    [m n] = size(img);
    for i=3:m-2
        for j=3:n-2
            v1 = [reshape(img(i-2:i-1,j-1:j+1),1,6) img(i,j)];
            v2 = [reshape(img(i-1:i+1,j+1:j+2),1,6) img(i,j)];
            v3 = [reshape(img(i+1:i+2,j-1:j+1),1,6) img(i,j)];
            v4 = [reshape(img(i-1:i+1,j-2:j-1),1,6) img(i,j)];
            v5 = [reshape(img(i-2:i-1,j-2:j-1),1,4) img(i-1,j) img(i,j-1) img(i,j)];
            v6 = [reshape(img(i-2:i-1,j+1:j+2),1,4) img(i-1,j) img(i,j+1) img(i,j)];
            v7 = [reshape(img(i+1:i+2,j+1:j+2),1,4) img(i+1,j) img(i,j+1) img(i,j)];
            v8 = [reshape(img(i+1:i+2,j-2:j-1),1,4) img(i+1,j) img(i,j-1) img(i,j)];
            v9 = reshape(img(i-1:i+1,j-1:j+1),1,9);
            V = {v1 v2 v3 v4 v5 v6 v7 v8 v9};
            st = zeros(1,9);
            me = zeros(1,9);
            for k=1:9
                st(k) = std(double(V{k}));
                me(k) = mean(V{k});
            end
            [~, k] = min(st);
            result(i,j) = uint8(me(k));
        end
    end
end



测试代码

org = imread('37_3.bmp');
result = smoothedfilter(org);

subplot(2,2,1);imshow(org);title('原图');
subplot(2,2,2);imshow(result);title('平滑过滤之后');

h=ones(3,3)./9;
y = filter2(h,org);
y = uint8(y);
subplot(2,2,3);imshow(y);title('filter2中值过滤之后');
y = imfilter(org,h);
subplot(2,2,4);imshow(y);title('imfilter中值过滤之后');
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式