PGM画像で双一次補間を行うGNUOctaveで関数を書き込もうとしています。結果はそれほど素晴らしいものではありません。画像全体にさまざまな色合いの斜めのストライプが表示され続けます。また、補間中に追加される行と列は、本来よりも暗くなります。誰かが問題を指摘して私を助けてくれませんか?
function bilinear(img)
data = imread(img);
for n = 1 : 2 : (rows(data) - 1) * 2
average = average_vector(data(n, 1:end), data(n+1:1:end));
data = [data(1:n, 1:end); average; data(n+1:rows(data), 1:end)];
end
for n = 1 : 2 : (columns(data) - 1) * 2
average = average_vector(data(1:rows(data), n), data(1:rows(data), n+1));
data = [data(1:rows(data), 1:n) average data(1:rows(data), n+1:end)];
end
imwrite(data, strcat("out_bilinear_", img));
end
function res = average_vector(a, b)
res = zeros(size(a));
for n = 1 : length(a)
res(n) = (a(n) + b(n)) / 2;
end
end
問題を示す画像は次のとおりです。