0
我正在嘗試在GNU八度中編寫一個函數,該函數在PGM圖像上執行雙線性插值。結果並不是那麼好:我不斷在圖像上留下不同色調的斜條紋。另外,在插值期間添加的行和列比他們應該更暗。請有人幫我指出問題嗎?由雙線性插值產生的斜條紋
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
這裏的顯示問題的圖像:
感謝您指出我可以做'(a + b)/ 2'而不需要'average_vector'。問題是冒號而不是逗號:這個'data(n + 1:1:end)'而不是這個'data(n + 1,1:end)'。它現在有效。我知道這不是非常有效,但在這一點上並不重要。 – 2012-04-27 14:33:19