Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 复制图像中的像素并使其大小加倍_Image_Matlab_Image Processing - Fatal编程技术网

Image 复制图像中的像素并使其大小加倍

Image 复制图像中的像素并使其大小加倍,image,matlab,image-processing,Image,Matlab,Image Processing,我试图复制矩阵或图像中的每个元素,并试图将图像的大小增加4。这意味着行和列的大小加倍 我试图通过使用for循环和无数组索引来实现这一点。这就是我目前所拥有的 function output = zoomx(img) [r,c] = size(img); output = img(r,c); [r1, c1] = size(output); for x = 1:r1 for y = 1:c1 j = 4*x; i = 4*y; output(

我试图复制矩阵或图像中的每个元素,并试图将图像的大小增加4。这意味着行和列的大小加倍

我试图通过使用for循环和无数组索引来实现这一点。这就是我目前所拥有的

function output = zoomx(img)
[r,c] = size(img);
output = img(r,c);
[r1, c1] = size(output);
for x = 1:r1
    for y = 1:c1
        j = 4*x;
        i = 4*y;
        output(j,i) = img(x,y);
    end
end
end
到目前为止,我想做的是迭代我的输出矩阵,将每个元素乘以4,但我得到的是一个巨大的零矩阵,新矩阵中的每个元素由4行和4列的零和零隔开

在此方面的任何帮助都将不胜感激


谢谢。

我假设您的目标是将图像的大小因子增加4,这意味着行和列的大小将增加一倍。您需要做的是创建一个输出图像,该图像的行数和列数是原始图像的两倍,然后对于原始图像中的每个像素,您需要将原始图像中的像素复制到右侧、底部和右下角位置

请注意,您的第二行代码
output=img(r,c)
不正确。这是访问位于原始图像左下角的单个像素。您可能打算使用
。此外,在缩小图像时,您访问输出中像素复制位置的方式可以在我之前给您的帖子中显示:。如果您还记得,行和列的输入到输出映射为:

j = factor*(x-1) + 1;
i = factor*(y-1) + 1;
在我们的例子中,因为您想将图像的大小增加一倍,所以可以将
因子设置为2
。此外,我们将扭转这一行动。输出图像需要
i
j
,不能访问输入图像。我们还需要将
i
j
移动
+1
,为输出设置每个双块的右、下和右下像素

因此:

function output = zoomx(img)
[r,c] = size(img);
output = zeros(2*r,2*c,class(img)); %// Change
for x = 1:r %// Change
    for y = 1:c
        j = 2*(x-1) + 1; %// Change
        i = 2*(y-1) + 1; %// Change           
        output(j,i) = img(x,y); %// Top-left
        output(j+1,i) = img(x,y); %// Bottom-left
        output(j,i+1) = img(x,y); %// Top-right
        output(j+1,i+1) = img(x,y); %// Bottom-right
    end
end
end
示例用法: 输入图像:

输出图像:

我假设您的目标是将图像的大小因子增加4,这意味着行和列的大小是原来的两倍。您需要做的是创建一个输出图像,该图像的行数和列数是原始图像的两倍,然后对于原始图像中的每个像素,您需要将原始图像中的像素复制到右侧、底部和右下角位置

请注意,您的第二行代码
output=img(r,c)
不正确。这是访问位于原始图像左下角的单个像素。您可能打算使用
。此外,在缩小图像时,您访问输出中像素复制位置的方式可以在我之前给您的帖子中显示:。如果您还记得,行和列的输入到输出映射为:

j = factor*(x-1) + 1;
i = factor*(y-1) + 1;
在我们的例子中,因为您想将图像的大小增加一倍,所以可以将
因子设置为2
。此外,我们将扭转这一行动。输出图像需要
i
j
,不能访问输入图像。我们还需要将
i
j
移动
+1
,为输出设置每个双块的右、下和右下像素

因此:

function output = zoomx(img)
[r,c] = size(img);
output = zeros(2*r,2*c,class(img)); %// Change
for x = 1:r %// Change
    for y = 1:c
        j = 2*(x-1) + 1; %// Change
        i = 2*(y-1) + 1; %// Change           
        output(j,i) = img(x,y); %// Top-left
        output(j+1,i) = img(x,y); %// Bottom-left
        output(j,i+1) = img(x,y); %// Top-right
        output(j+1,i+1) = img(x,y); %// Bottom-right
    end
end
end
示例用法: 输入图像:

输出图像:

我假设您的目标是将图像的大小因子增加4,这意味着行和列的大小是原来的两倍。您需要做的是创建一个输出图像,该图像的行数和列数是原始图像的两倍,然后对于原始图像中的每个像素,您需要将原始图像中的像素复制到右侧、底部和右下角位置

请注意,您的第二行代码
output=img(r,c)
不正确。这是访问位于原始图像左下角的单个像素。您可能打算使用
。此外,在缩小图像时,您访问输出中像素复制位置的方式可以在我之前给您的帖子中显示:。如果您还记得,行和列的输入到输出映射为:

j = factor*(x-1) + 1;
i = factor*(y-1) + 1;
在我们的例子中,因为您想将图像的大小增加一倍,所以可以将
因子设置为2
。此外,我们将扭转这一行动。输出图像需要
i
j
,不能访问输入图像。我们还需要将
i
j
移动
+1
,为输出设置每个双块的右、下和右下像素

因此:

function output = zoomx(img)
[r,c] = size(img);
output = zeros(2*r,2*c,class(img)); %// Change
for x = 1:r %// Change
    for y = 1:c
        j = 2*(x-1) + 1; %// Change
        i = 2*(y-1) + 1; %// Change           
        output(j,i) = img(x,y); %// Top-left
        output(j+1,i) = img(x,y); %// Bottom-left
        output(j,i+1) = img(x,y); %// Top-right
        output(j+1,i+1) = img(x,y); %// Bottom-right
    end
end
end
示例用法: 输入图像:

输出图像:

我假设您的目标是将图像的大小因子增加4,这意味着行和列的大小是原来的两倍。您需要做的是创建一个输出图像,该图像的行数和列数是原始图像的两倍,然后对于原始图像中的每个像素,您需要将原始图像中的像素复制到右侧、底部和右下角位置

请注意,您的第二行代码
output=img(r,c)
不正确。这是访问位于原始图像左下角的单个像素。您可能打算使用
。此外,在缩小图像时,您访问输出中像素复制位置的方式可以在我之前给您的帖子中显示:。如果您还记得,行和列的输入到输出映射为:

j = factor*(x-1) + 1;
i = factor*(y-1) + 1;
在我们的例子中,因为您想将图像的大小增加一倍,所以可以将
因子设置为2
。此外,我们将扭转这一行动。输出图像需要
i
j
,不能访问输入图像。我们还需要将
i
j
移动
+1
,为输出设置每个双块的右、下和右下像素

因此:

function output = zoomx(img)
[r,c] = size(img);
output = zeros(2*r,2*c,class(img)); %// Change
for x = 1:r %// Change
    for y = 1:c
        j = 2*(x-1) + 1; %// Change
        i = 2*(y-1) + 1; %// Change           
        output(j,i) = img(x,y); %// Top-left
        output(j+1,i) = img(x,y); %// Bottom-left
        output(j,i+1) = img(x,y); %// Top-right
        output(j+1,i+1) = img(x,y); %// Bottom-right
    end
end
end
示例用法: 输入图像:

输出图像:

我不知道