C中的图像/ 2D阵列重采样

时间:2011-06-29 08:47:27

标签: c interpolation downsampling

我希望为2D阵列实现重采样算法(它可能是灰度图像或某些浮点值的2D数组)。

此特定操作涉及的步骤如下:

  1. 鉴于2D阵列,我首先使用一些下采样方法(最好采用先前的抗混叠滤波)将其下采样到8x8或16x16的大小。

  2. 对此进行了一些非常规的操作。

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

  4. 作为原型,我将其编码如下所示在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代码的指针,用于双线性插值以执行上采样。

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

1 个答案:

答案 0 :(得分:1)

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

相关问题