此程序显示原始图像,缩放图像和裁剪图像。但是这段代码是如何缩放图像的。我无法理解这段代码的工作原理和逻辑。这里有人能告诉我这段代码是如何工作的吗?提前谢谢。
[row,col] = size(lena);
Scale_Rows = 2*row;
Scale_Cols = 2*col;
Scale_image = zeros(Scale_Rows,Scale_Cols);
for i= 1:row
for j = 1:col
Scale_image(i*2,j*2) = lena(i,j);
end
end
conv_mask = [ 0.25 0.5 0.25; 0.5 1 0.5; 0.25 0.5 0.25];
fin_lena = lena;
figure;
imshow(fin_lena);
title('Scaled Image');
答案 0 :(得分:2)
此处的代码首先将坐标的图像大小加倍:
for i= 1:row
for j = 1:col
Scale_image(i*2,j*2) = lena(i,j);
end
end
所以如果原始图像是
A B
C D
然后变成:
A X B X
X X X X
C X D X
X X X X
X
是一个空像素。
然后代码通过根据它对周围像素的组合来填充(插值)空像素:
conv_mask = [ 0.25 0.5 0.25;
0.5 1 0.5;
0.25 0.5 0.25];
因此,这意味着您对当前所在像素的权重为1,对于紧靠上方或侧方的任何像素为0.5,对于附近的对角线像素为0.25。在对所有像素执行此操作之后,填充间隙。通过填充这样的空白间隙,您最终会获得比原始像素加倍的更好看的图像。
答案 1 :(得分:1)
只是一个非常简单的2 x上采样例程: