Отображение прозрачного изображения на осях (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 с его прозрачностью на осях?

РЕДАКТИРОВАТЬ: метод Хорхлера работал; Спасибо!!


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