【问题标题】:making convolution in matlab manualy手动在matlab中进行卷积
【发布时间】:2020-12-19 09:02:32
【问题描述】:

我想在matlab中进行卷积图像处理而不使用(conv2)命令 我想将 (.^) 命令与 2 for 循环一起使用 我制作这段代码来制作 LoG 5x5 过滤器 但它在这一行不起作用 (I(r,c) =sum(sum( Mask.* I( (r-2):(c-2), (r+2):(c+2) ) )) ;)

clc
clear;
Img = imread ('11.jpg');                                               %reading Image
for x = 1:size(Img,1)                                                  % converting to Gray 
    for y =1:size(Img,2)
        G (x,y)= (Img(x,y,1)*0.3 + Img(x,y,2)*0.59 + Img(x,y,1)* 0.11);
    end
end
Mask = [0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0]; % the mask
I=double(G);Mask=double(Mask);
% I=conv2(G,Mask);                                                      % masking quickly
for r = 3: size(I,1)-2                                                  %masking manualy
   for c = 3: size(I,2)-2
      I(r,c) =sum(sum( Mask.* I( (r-2):(c-2), (r+2):(c+2) ) ));
   end
end
imshow(Img);title('Orginal Image');
figure,imshow(G);title('Gray Image');
figure,imshow(uint8(I));title('Proccessed Image');

【问题讨论】:

    标签: matlab-figure


    【解决方案1】:

    调试是解决一些问题的好方法。

    当c = 4时,r = 3("for c = 3: size(I,2)-2"中的第二个循环)

    I( (r-2):(c-2), (r+2):(c+2) ) 是一个 2 * 2 矩阵,

    Mask 是一个 5*5 的矩阵。

    所以错误信息是“矩阵尺寸必须一致”。

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多