2016-11-14 187 views
0

我目前正在準備一些將在Psychtoolbox中顯示的灰度.png圖像。這些.png文件都具有透明背景,所以我在阿爾法層被添加到該文件矩陣像這樣:爲什麼在Psychtoolbox中顯示灰度.png文件(帶有Alpha通道)時,圖像是否顯示爲紅色?

% sets up for the alpha 
Screen('BlendFunction', w, 'GL_SRC_ALPHA', 'GL_ONE_MINUS_SRC_ALPHA'); 

[pngImage,~,alpha] = imread('image.png'); % read in the image 
pngImage(:,:,4) = alpha; % add in the alpha channel 
pngTexture = Screen('MakeTexture',w, pngImage); % create image texture 

當顯示這些圖像,背景是完全透明的。然而,他們也呈現爲bright red instead of greyscale(鏈接到圖片)。當我註釋掉在alpha通道中添加的代碼行時,背景不再透明,但是it is in greyscale(鏈接到圖像)。

集合中的一些圖像呈現得很好,沒有問題。這些圖像在Photoshop中進行批處理。呈現該問題的圖像似乎是在GIMP中手動處理的圖像。但是,整個圖像集在Psychopy中表現得很好。 (由於時間限制和一些MATLAB特定功能的要求,在Psychopy中編寫此項目不是一種選擇。)

如果我不得不猜測,我的極其有限知識我想說,添加第四個將二維矩陣轉換成圖像矩陣是設置乘以顏色值的參數。但是,我不知道如何。任何人有任何想法?

+0

FWIW,它看起來像隱含加入阿爾法假設輸入圖像RGB,沒有灰度 - 和你的工具「有益補充說:」 G和B通道。 – usr2564301

回答

1

因爲您沒有添加G和B通道,所以它們是零!

試試這個:

pngImage(:,:,2) = pngImage(:,:,1); 
pngImage(:,:,3) = pngImage(:,:,1); 
pngImage(:,:,4) = alpha; % add in the alpha channel 
+0

謝謝!這工作完美。 – treismanwolfe

相關問題