先贴上效果图:
-
将读取图片,并将其赋给矩阵变量。并测算一下矩阵大小
im=imread('1.jpg'); imgsize = size(im);
-
将图片进行预处理。因为这里我们进行池化操作的过滤器的尺寸是 3 * 3。
所以对与一些图片尺寸的大小(长宽)不能为3整除的,我们需要进行处理。while 1==1 if mod(imgsize(1),3)== 0 break; end im = im(1:end-1,:,:); imgsize = size(im) end while 1==1 if mod(imgsize(2),3)== 0 break; end im = im(:,1:end-1,:); imgsize = size(im); end
-
对图片进行预处理后,我们需要使用过滤器提取矩阵中所有区域。
im1=im(1:3:end,1:3:end,:); im2=im(2:3:end,1:3:end,:); im3=im(3:3:end,1:3:end,:); im4=im(1:3:end,2:3:end,:); im5=im(2:3:end,2:3:end,:); im6=im(3:3:end,2:3:end,:); im7=im(1:3:end,3:3:end,:); im8=im(2:3:end,3:3:end,:); im9=im(3:3:end,3:3:end,:);
-
接下来就是从每个区域(图中颜色块)9个值中,选取其中最大的作为最后图像在该点的值。
im_max = max(cat(4,im1,im2,im3,im4,im5,im6,im7,im8,im9),[],4);
-
这样我们就得到最终图像。那接下来就是输出图像了。
figure('color','w') ha=subplot(1,2,1); imshow(im,imref2d(size(im))) i = size(im); title(ha,['原图 大小为:',num2str(i(1)),'*',num2str(i(2))],'FontSize',10) ha=subplot(1,2,2); imshow(im_max,imref2d(size(im1))) i = size(im_max); title(ha,['3*3最大池化后,大小为:',num2str(i(1)),'*',num2str(i(2))],'FontSize',10)
如果你想要是复现实验效果,可以直接(依照循序)粘贴如上代码运行。这里我就不过多解释某行代码的具体作用及某个函数的用法。
如有疑问,请评论留言哦。