Я хочу реализовать алгоритм передискретизации для 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 для билинейной интерполяции для выполнения повышающей дискретизации.
Также ищем несколько указателей для фильтра сглаживания и метода понижающей выборки с использованием билинейного метода.