image - 在MATLAB中生成白色图像使用 image() 和 imshow ( ),图像 upsampling

  显示原文与译文双语对照的内容
77 4

当我显示我的重建图像时,它们只是白色。 我的程序有明显的错误?

重建图像应在 upsampled 2x2 像素块中具有downsampled图像的一个像素值。 我在这里使用的插值方法只是从上面的一行获取值并用它填充下一行,重复这个过程。


%% Image Resampling

close all; clear all; clc;

s_dir=pwd;
cd Images;

I=imread('aivazovsky78g.tif','tif');

cd(s_dir)

[N M]=size(I);

figure;
imshow(I)
axis image; hold on;

 for k=1:4
 pause(1)
 I=I(1:2:N, 1:2:M);
 [N M]=size(I);
 image(I)
 end

 %% Image Reconstruction

Irec=zeros(2*size(I));
for r=1:5
for n=1:N-1
 for m=1:M-1
 Irec(2*n-1,2*m-1)=I(n,m);
 end
end
[N M]=size(Irec);
for n=2:2:N
 for m=2:2:M
 Irec(n,:)=Irec(n-1,:);
 Irec(:,m)=Irec(:,m-1);
 end
end
I=Irec;
figure;
imshow(I)
 end

时间: 原作者:

64 3

你可以使用 B = imresize(A, scale, 'box') 其中 2的scalexy 中的像素数量加倍。 z 维度仍具有相同的值。

resizing方法 box 将初始像素值 (i, j) 复制到它的3个新邻居 (i+1, j)(i, j+1)(i+1, j+1) - 你编写的相同方法。

原作者:
141 5

这不是最有效的方法,但这里是一个工作代码:


% 256x256 grayscale image
I = imread('cameraman.tif');

% double in size
I2 = zeros(2*size(I),class(I));
for i=1:2:size(I2,1)
 for j=1:2:size(I2,2)
 I2([i i+1],[j j+1]) = I((i-1)/2 + 1, (j-1)/2 + 1);
 end
end

% compare against @Magla's solution
I3 = imresize(I,2,'box');
isequal(I2,I3)

原作者:
...