【问题标题】:Image/2D array resampling in CC中的图像/二维数组重采样
【发布时间】:2011-06-29 08:47:27
【问题描述】:

我希望为 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 代码的指针。

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

【问题讨论】:

    标签: c interpolation downsampling


    【解决方案1】:

    我认为您正在寻找的内容包含在 NetPBM 套件中。具体来说,pamscale 处理向上和向下采样,并针对两个方向使用多种可能的过滤方案。代码写得很好,而且是独立的。

    【讨论】:

    • 我阅读了该代码,但它 -a) 难以理解,因此难以提取/修改。 b)没有办法测试它。
    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 2021-11-24
    • 2013-07-12
    • 2013-12-16
    • 2012-10-25
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多