2011-06-29 54 views
1

我期待實現二維陣列(它可以是灰度圖像或浮點值的一些二維數組)的重採樣算法。在C中的圖像/二維陣列重採樣

參與此特定操作的步驟是:

  1. 鑑於2D陣列,我首先它下采樣到8x8或16×16大小,使用一些下采樣方法(優選用前述抗混疊濾波)。

  2. 對此的一些nuemrical操作。

  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代碼執行上採樣的指針。

也希望得到一些使用雙線性方法的抗混疊濾波器和下采樣方法的指針。

回答

1

我想你正在尋找的是NetPBM套件。具體而言,pamscale可處理向上和向下採樣,並針對兩個方向使用多種可能的過濾方案。該代碼既精心編寫又獨立。

+0

謝謝。將讀取代碼並更新。 – goldenmean

+0

我讀過這段代碼,但它是 - a)很難理解,因此提取/修改。 b)沒辦法測試它。 – goldenmean