1

我正在寻找为 2D 数组实现重采样算法(它可以是灰度图像或一些 2D 浮点值数组)。

此特定操作涉及的步骤是:

  1. 给定一个二维数组,我首先使用一些下采样方法(最好使用前面的抗混叠过滤)将其下采样到 8x8 或 16x16 的大小。

  2. 对此进行一些数值运算。

  3. 然后通过双线性插值将其上采样回其原始大小。

作为原型,我在 Octave 中对其进行了如下编码。它给出了不错的结果。我希望获得有关 C 实现的一些参考。

fid = fopen("anti_vig_gain_map.txt","r");
fid2 = fopen("ds_us_anti_vig_gain_map.txt","w");

for i=1:1968
    for j=1:2592
       map(i,j) = fscanf(fid,'%f\n',1);

    end
end

%downsample

ds_map = imresize(map,[8 8],'linear');

%% some processing on ds_map

%upsample

us_map = imresize(ds_map,[1968 2592],'linear');

我试图查看 imresize.m 中的代码,但一段时间后它变得复杂,无法从中提取 C 代码。

任何指向用于双线性插值以执行上采样的 C 代码的指针。

还希望获得一些关于使用双线性方法的抗混叠滤波器和下采样方法的指针。

4

1 回答 1

1

我认为您正在寻找的内容包含在 NetPBM 套件中。具体来说,pamscale使用多种可能的双向过滤方案处理上采样和下采样。该代码编写良好且独立。

于 2011-06-30T11:36:47.003 回答