[英]Image/2D array resampling in C
我正在尋找為 2D 數組實現重采樣算法(它可以是灰度圖像或一些 2D 浮點值數組)。
此特定操作涉及的步驟是:
給定一個二維數組,我首先使用一些下采樣方法(最好使用前面的抗混疊過濾)將其下采樣到 8x8 或 16x16 的大小。
對此進行一些數值運算。
然后通過雙線性插值將其上采樣回其原始大小。
作為原型,我在 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 代碼的指針,用於執行上采樣的雙線性插值。
還希望獲得一些關於使用雙線性方法的抗混疊濾波器和下采樣方法的指針。
我認為您正在尋找的內容包含在 NetPBM 套件中。 具體來說, pamscale使用多種可能的雙向過濾方案處理上采樣和下采樣。 該代碼編寫良好且獨立。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.