2015-05-10 3 views
0

Я пытаюсь загрузить прозрачное изображение. Кажется, что он работает нормально в первой части кода, но затем не работает. Вот кодMatlab Transparent PNG (Upside Down/Smaller Image)

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); 

Я могу сохранить прозрачное изображение. Я новичок в этой обработке цвета, поэтому извините меня, если я делаю действительно глупую ошибку. Thank you

EDIT Внутри изображения цикла печатается дважды, первый раз как прозрачный и второй раз с черным фоном. Кажется, я не показываю изображение правильно. Кроме того, название «Working Fine» прикреплено к черному фону не к другому.

EDIT2:

Реальная проблема заключается в том, что изображение с альфа-каналом в настоящее время с ног на голову. 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}); Я получаю желаемые результаты. Может ли кто-нибудь объяснить, как работать с обработчиком? Думаю, мне нужно пройти документацию.

ответ

0

Чтобы изменить использование у-направления:

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

Это не полностью решить эту проблему, так как изображение не только с ногами на голове также низкого качества и меньше. – RBS

+0

, не зная больше о ваших действительных изображениях, трудно ответить на них. Сказав, что вы это делаете, вы можете указать свойства «XData» и «YData» при вызове изображения -> таким образом, чтобы вы могли наложить их. – matlabgui