Matlab透明PNG(颠倒/更小的图像)

时间:2015-05-10 10:57:39

标签: matlab image-processing colors alpha-transparency

我正在尝试加载透明图像。它似乎在代码的第一部分工作正常,但后来失败了。这是代码

for l = 1:4
    color = he;
    color(something ~= l) = 0;
    A = ((color(:,:,1)));
    A( all(color == 0, 3 ) ) = 1;
    file = strcat(file{k}, '.png');
    segmented_images{k} = color;
    transparency{k} = A;
    chk = segmented_images{k};
    f = imshow(chk);
    set(f, 'AlphaData', transparency{k});
    figure, imshow(chk), title("Working Fine");
end

这里的图像看起来是透明的。 如果我在循环外测试它:

my_alpha = transparency{1};
chk2 = segmented_images{1};
f = imagesc(chk2);
set(f, 'AlphaData', transparency{1});
figure, imshow(chk2),title('transparent Final');    
imwrite(chk2, 'G:\path.png');

我在透明区域看到黑色。如果我这样做:

imwrite(chk2, 'G:\wamp\www\final_check.png', "Alpha", my_alpha);

我可以保存透明图像。我是这个颜色处理的新手,所以请原谅我,如果我犯了一个非常愚蠢的错误。谢谢

修改的 在循环内部图像打印两次,第一次是透明的,第二次是黑色背景。我似乎没有以正确的方式显示图像。此外,“工作正常”标题附在黑色背景图像上,而不是另一个。

EDIT2:

真正的问题是带有Alpha通道的图像是颠倒的。These are the four images that I overlay on each other

我得到的结果是:Upside down, Final images

这是代码:

  figure
  hold on
  h1 = image(segmented_images{1});
  set(h1, 'AlphaData', transparency{1});
  h2 = image(last_image);
  set(h2, 'AlphaData', transparency{2});
  h3 = image(segmented_images{3});
  set(h3, 'AlphaData', transparency{3});
  h4 = image(segmented_images{4});
  set(h4, 'AlphaData', transparency{4});
  hold off;

这里有两个问题:一个是图像较小且颠倒。我是否正确覆盖它。我再次怀疑这是我无法找到的愚蠢错误。任何帮助将不胜感激。

更新:

当我改变

h1 = image(segmented_images {1});

要  h1 = imshow(segmented_images{1}); 我得到了理想的结果。有人可以解释如何获得处理程序是不同的?我想我需要通过文档。

1 个答案:

答案 0 :(得分:0)

要更改y方向使用:

set ( axesHandle, 'YDir', 'reverse' )