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 如何在Matlab中叠加多幅图像?_Image_Matlab_Image Processing_Overlay - Fatal编程技术网

Image 如何在Matlab中叠加多幅图像?

Image 如何在Matlab中叠加多幅图像?,image,matlab,image-processing,overlay,Image,Matlab,Image Processing,Overlay,我有图像A、B和C。如何使用Matlab将这些图像叠加成D?我至少有50张照片要拍。谢谢 下载图片: 答:https://docs.google.com/open?id=0B5AOSYBy_josQ3R3Y29VVFJVUHc B:https://docs.google.com/open?id=0B5AOSYBy_josTVIwWUN1a085T0U C:https://docs.google.com/open?id=0B5AOSYBy_josLVRwQ3JNYmJUUFk D:https:/

我有图像A、B和C。如何使用Matlab将这些图像叠加成D?我至少有50张照片要拍。谢谢

下载图片:

答:
https://docs.google.com/open?id=0B5AOSYBy_josQ3R3Y29VVFJVUHc

B:
https://docs.google.com/open?id=0B5AOSYBy_josTVIwWUN1a085T0U

C:
https://docs.google.com/open?id=0B5AOSYBy_josLVRwQ3JNYmJUUFk


D:
https://docs.google.com/open?id=0B5AOSYBy_josd09TTFE2VDJIMzQ

要将图像一起淡入淡出,请执行以下操作:

因为matlab中的图像只是矩阵,所以可以将它们相加

D = A + B + C
当然,如果图像没有相同的尺寸,则必须将所有图像裁剪为最小的尺寸

应用这个原理越多,像素值就会越大。使用
imshow(D,[])
显示图像可能是有益的,其中空矩阵参数告诉
imshow
将像素值缩放到
D
中包含的实际最小值和最大值

替换原始图像的更改部分:

创建一个函数
组合(a,b)

伪代码:

# create empty answer matrix
c = zeros(width(a), height(a))

# compare each pixel in a to each pixel in b
for x in 1..width
    for y in 1..height
        p1 = a(x,y)
        p2 = b(x,y)

        if (p1 != p2)
            c(x,y) = p2
        else
            c(x,y) = p1
        end
    end
end
使用此
组合(a,b)
功能,如下所示:

D = combine(combine(A,B),C)
或在循环中:

D = combine(images(1), images(2));
for i = 3:numImages
    D = combine(D, images(i));
end

要将图像一起淡入淡出状态:

因为matlab中的图像只是矩阵,所以可以将它们相加

D = A + B + C
当然,如果图像没有相同的尺寸,则必须将所有图像裁剪为最小的尺寸

应用这个原理越多,像素值就会越大。使用
imshow(D,[])
显示图像可能是有益的,其中空矩阵参数告诉
imshow
将像素值缩放到
D
中包含的实际最小值和最大值

替换原始图像的更改部分:

创建一个函数
组合(a,b)

伪代码:

# create empty answer matrix
c = zeros(width(a), height(a))

# compare each pixel in a to each pixel in b
for x in 1..width
    for y in 1..height
        p1 = a(x,y)
        p2 = b(x,y)

        if (p1 != p2)
            c(x,y) = p2
        else
            c(x,y) = p1
        end
    end
end
使用此
组合(a,b)
功能,如下所示:

D = combine(combine(A,B),C)
或在循环中:

D = combine(images(1), images(2));
for i = 3:numImages
    D = combine(D, images(i));
end

从这个例子来看,在我看来,请求的操作是一个以指定顺序排列的“”的小例子

像这样的东西应该可以工作-现在没有matlab,所以这是未经测试的,但它应该是正确的,或者几乎是正确的

function abc = composite(a, b, c)
  m = size(a,1); n = size(a,2);
  abc = zeros(m, n, 3);
  for i=1:3
    % Vectorize the i-th channel of a, add it to the accumulator.
    ai = a(:,:,i); 
    acc = ai(:);
    % Vectorize the i-th channel of b, replace its nonzero pixels in the accumulator
    bi = b(:,:,i); 
    bi = bi(:);
    z = (bi ~= 0);
    acc(z) = bi(z);
    % Likewise for c
    ci = c(:,:,i);
    ci = ci(:);
    z = (ci ~= 0);
    acc(z) = ci(z);
    % Place the result in the i-th channel of abc
    abc(:,:,i) = reshape(acc, m, n);
 end

从这个例子来看,在我看来,请求的操作是一个以指定顺序排列的“”的小例子

像这样的东西应该可以工作-现在没有matlab,所以这是未经测试的,但它应该是正确的,或者几乎是正确的

function abc = composite(a, b, c)
  m = size(a,1); n = size(a,2);
  abc = zeros(m, n, 3);
  for i=1:3
    % Vectorize the i-th channel of a, add it to the accumulator.
    ai = a(:,:,i); 
    acc = ai(:);
    % Vectorize the i-th channel of b, replace its nonzero pixels in the accumulator
    bi = b(:,:,i); 
    bi = bi(:);
    z = (bi ~= 0);
    acc(z) = bi(z);
    % Likewise for c
    ci = c(:,:,i);
    ci = ci(:);
    z = (ci ~= 0);
    acc(z) = ci(z);
    % Place the result in the i-th channel of abc
    abc(:,:,i) = reshape(acc, m, n);
 end

请在上面发布的链接中查看图片和预期结果。很抱歉,这绝对不是您想要的。我保留了我最初的解释给任何想看的人,我还补充了我认为是解决你问题的合理方法。请记住,我的解决方案返回的答案在很大程度上取决于您指定A、B和C的顺序。如果您不希望答案取决于参数的顺序,那么您需要想出一些函数来确定在
p1!=p2
。此外,如果您想将一个函数应用于50幅图像,您可以在一个循环中进行操作(见上文)。我一直在搜索所有SO和M Central以获得此答案,大约一天后,这里给出了最简单和最合理的答案。如果你在场,我会吻你!请在上面发布的链接中查看图片和预期结果。很抱歉,这绝对不是您想要的。我保留了我最初的解释给任何想看的人,我还补充了我认为是解决你问题的合理方法。请记住,我的解决方案返回的答案在很大程度上取决于您指定A、B和C的顺序。如果您不希望答案取决于参数的顺序,那么您需要想出一些函数来确定在
p1!=p2
。此外,如果您想将一个函数应用于50幅图像,您可以在一个循环中进行操作(见上文)。我一直在搜索所有SO和M Central以获得此答案,大约一天后,这里给出了最简单和最合理的答案。如果你在场,我会吻你!您是否只有图像,或者您是否有生成每个分子图像的基础数据集(例如使用
surf
)?您是否只有图像,或者您是否有生成每个分子图像的基础数据集(例如使用
surf
)?