gpt4 book ai didi

image - 在 MATLAB 中显示图像比例空间

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:06 28 4
gpt4 key购买 nike

我有 8 张图片,我想以如下所示的比例空间格式显示它们。原始图像的高度和宽度为256。然后在原始图像的右侧,在每个级别上将尺寸减小2。像这里,图像高度和宽度为256。在原始图像的右侧,高度和宽度为128 , 64, 32, 16, 8, 4 , 2.

我有各自尺寸的所有图像。我只想知道如何根据下面显示的模式排列图像。提前致谢。

enter image description here

最佳答案

这看起来像是您正在尝试构建一个比例空间并将结果显示给用户。这不是一个问题。请记住,您必须使用 for 循环来执行此操作,因为除非您复制并粘贴几行代码,否则我不知道您将如何执行此操作。实际上,我将使用 while 循环,我很快就会告诉您原因。

在任何情况下,您都需要声明一个输出图像,其行数与原始图像一样多,但列数将是原始图像的 1.5 倍,以容纳右侧的图像。

首先,编写代码将原始图像放在左侧,将缩小一半的版本放在右侧。完成此操作后,您将编写一个 for 循环,使用索引将图像放置在正确的位置,直到用完比例,并且您需要跟踪下一张图像的开始位置和下一张图像结束。请记住,在第一个子采样图像之后写入下一个图像的原点将从原始图像的列位置开始,而该行恰好在前一个图像结束的位置。例如,让我们使用 cameraman.tif 图像,它正好是 256 x 256,但我会编写代码以使其适合您想要的任何图像分辨率。当我对图像进行子采样时,我将使用 imresize在 MATLAB 中帮助调整图像大小,我将指定 0.5 的采样因子来表示 2 的子采样。我将使用 while 的原因相反,循环是因为我们可以继续循环和调整大小直到调整大小的图像的其中一个维度是1。在这种情况下,没有更多的秤需要处理,所以我们可以退出。

因此:

%// Read in image and get dimensions
im = imread('cameraman.tif');
[rows,cols] = size(im);

%// Declare output image
out = zeros(rows, round(1.5*cols), 'uint8');
out(:,1:cols) = im; %// Place original image to the left

%// Find first subsampled image, then place in output image
im_resize = imresize(im, 0.5, 'bilinear');
[rows_resize, cols_resize] = size(im_resize);
out(1:rows_resize,cols+1:cols+cols_resize) = im_resize;

%// Keep track of the next row we need to write at
rows_counter = rows_resize + 1;

%// For the rest of the scales...
while (true)
%// Resize the image
im_resize = imresize(im_resize, 0.5, 'bilinear');
%// Get the dimensions
[rows_resize, cols_resize] = size(im_resize);
%// Write to the output
out(rows_counter:rows_counter+rows_resize-1, cols+1:cols+cols_resize) = ...
im_resize;

%// Move row counter over for writing the next image
rows_counter = rows_counter + rows_resize;

%// If either dimension gives us 1, there are no more scales
%// to process, so exit.
if rows_resize == 1 || cols_resize == 1
break;
end
end

%// Show the image
figure;
imshow(out);

这是我得到的图像:

enter image description here

关于image - 在 MATLAB 中显示图像比例空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25985144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com