开发者

Image/2D array resampling in C

I am looking to implement a resampling algorithm for a 2D array(it could be grayscale image or some 2D array of floating point values).

The steps involved in this particular operation are:

  1. Given a 2D array, I first downsample it to size of 8x8 or 16x16, using so开发者_Go百科me down-sampling method(preferably with a preceeding anti-aliasing filtering).

  2. Some nuemrical operation on this.

  3. Then upsample it back to its original size by doing, bilinear interpolation.

As a prototype I coded it as shown below in Octave. It gives decent results. I am looking to get some reference on C implementation.

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');

I tried to see the code in imresize.m but it gets complicated after sometime and could not extract C code out of it.

Any pointers to reference C code for bilinear interpolation to perform the upsampling.

Also looking to get some pointers for the the anti-aliasing filter and down-sampling method using bilinear method.


I think what you are looking for is contained in the NetPBM suite. Specifically, pamscale which handles both up and down sampling with multiple possible filtering schemes for both directions. The code is both well-written and self-contained.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜