Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-带5X5滤波器的图像滤波,不带imfilter函数_Matlab - Fatal编程技术网

Matlab-带5X5滤波器的图像滤波,不带imfilter函数

Matlab-带5X5滤波器的图像滤波,不带imfilter函数,matlab,Matlab,我试图修改代码()以使用5X5高斯滤波器过滤图像。有点不对劲,但我找不到 gauss_kernel = fspecial('gaussian',5,2); function [result] = evc_filter(input, kernel) rsize = size(input); r = zeros(rsize); original=padarray(input,[2,2]); for i

我试图修改代码()以使用5X5高斯滤波器过滤图像。有点不对劲,但我找不到

     gauss_kernel = fspecial('gaussian',5,2);
        function [result] = evc_filter(input, kernel)


        rsize = size(input);

        r = zeros(rsize);

        original=padarray(input,[2,2]);

        for i = 3:rsize(1)+2
            for j = 3:rsize(2)+2           
                temp = original(i-2:i+2,j-2:j+2) .* kernel;
                r(i-2,j-2) = sum(temp(:));
            end
        end
result=r;
end

如果我用imshow显示图片,如果我使用imfilter功能,它看起来会有所不同。有人能帮忙吗?

首先,将图像转换为double,然后执行其余步骤。请参见下面的示例代码:

function imfilt()
img = imread('one.jpg');
img = double(img);
[r,c,z] = size(img);
pad = 4;
nimg = zeros(r+pad,c+pad,z);
nimg(pad/2+1: r+pad/2, pad/2+1: c+pad/2,:) = img;
h = fspecial('gaussian',5,2);

res = zeros(r,c,z);
for i = pad/2+1 : r+pad/2
    for j = pad/2+1 : c+pad/2
        tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,1).*h;
        res(i-pad/2,j-pad/2,1) = sum(tmp(:));
        tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,2).*h;
        res(i-pad/2,j-pad/2,2) = sum(tmp(:));
        tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,3).*h;
        res(i-pad/2,j-pad/2,3) = sum(tmp(:));
    end
end

imshow(uint8(res),[]);
end

内核是如何定义的?f特殊('gaussian',5,2);使用double(原始)将图像转换为double,然后执行剩下的步骤。感谢您的提示,但结果图片上没有任何更改您从未在函数中定义
result
。这是因为从您的代码复制粘贴到此帖子吗?我用您的示例代码尝试过,并将其更改为我的变量,但我收到一条错误消息Assignment的非单例rhs维度多于非单例Subscripts您可能没有正确初始化某个变量。我只更改了这一行:img=double(输入);输入和内核的大小是多少?