Показване на прозрачно изображение върху оси (MATLAB)

Така че имам това прозрачно изображение (http://imgur.com/fyqslAx), което искам да покажа на оси в MATLAB с неговата прозрачност. За да направя това, използвах кода по-долу, който работи с други прозрачни png изображения, които имам:

[A, map, alpha] = imread('fyqslAx.png');
h = imshow(A, map)
set(h, 'AlphaData', alpha);

Този код обаче изглежда не работи с изображението по-горе. Предполагам, че това е така, защото има нещо общо с това, че изображението е в сивата скала и има битова дълбочина 1, което води до това, че картата и алфа нямат нищо в себе си (докато другите png прозрачни изображения, които имам, имат нещо в карта и алфа). Ако използвам само това:

A = imread('fyqslAx.png');
h = imshow(A)

Появява се черен фон, където изображението трябва да е прозрачно.

Как да покажа този http://imgur.com/fyqslAx с неговата прозрачност върху оси?

РЕДАКТИРАНЕ: методът на Horchler работи; Благодаря!!


person user1106340    schedule 10.03.2014    source източник


Отговори (1)


Ако стартирате imfinfo('fyqslAx.png'), ще видите, че 'Transparency' е указано като 'simple', а 'SimpleTransparencyData' е зададено на 0 (false). Не мога да намеря документация за това, но мисля, че това може да означава, че алфа каналът е компресиран в данните за изображението, тъй като изображението е двоично и в сива скала. Ефективно изображението е двоична маска, прозрачна или не. Можете да покажете вашето изображение по следния начин:

A = imread('fyqslAx.png');
h = imshow(A);
set(h, 'AlphaData', A);

Ако се опитате да върнете цветова карта и/или алфа канал от imread, като използвате допълнителни изходни аргументи, ще видите, че и двата са празни.

person horchler    schedule 10.03.2014