减少像素数以获得低分辨率图像

时间:2018-01-25 05:02:47

标签: matlab image-processing computer-vision subsampling

我正在尝试为我的工作使用不同的低分辨率图像。最近,我正在阅读用于自动目标的低分辨率卷积神经网络 识别,他们没有提到他们制作低分辨率图像的方式。

  

特征计算的分辨率调整:显示影响   关于这些图像表示的性能的决议,我们   专注于从200×200到10×10的七种特定分辨率   像素

以下是论文enter image description here中的示例图片。

任何人都可以帮我在MATLAB中实现这个方法吗?

目前,我正在使用这种方式制作低分辨率图像:

img = im2double(imread('cameraman.tif'));
conv_mat = ones(6) / 36;
img_low = convn(img,conv_mat,'same');

figure, imshow(img), title('Original');
figure, imshow(img_low), title('Low Resolution')

1 个答案:

答案 0 :(得分:3)

你有一个良好的开端。卷积使得每个像素包含6x6邻域的平均值。现在剩下的就是在每个6x6邻域中只保留一个像素。此像素将包含已删除信息的平均值:

img = im2double(imread('cameraman.tif'));
conv_mat = ones(6) / 36;
img_low = convn(img,conv_mat,'same');
img_low = img_low(3:6:end,3:6:end)

figure, imshow(img), title('Original');
figure, imshow(img_low), title('Low Resolution')

3:6:end只表示要保留哪些列和哪些行。我在3处开始子采样,以避免使用背景平均的像素。

根据您发布的图像判断,他们使用了这种平均方法。其他替代方案是在邻域中取最大值(如在卷积神经网络的最大池层中所做的那样),或者简单地进行子采样而不进行任何滤波(引入混叠,我不建议使用此方法)。