2016-11-14 14 views
0

Psychtoolbox에 표시되는 그레이 스케일 .png 이미지를 준비 중입니다. 이 .png를 파일 모두 투명 배경을 가지고 있고, 그래서과 같이 파일 매트릭스에 알파 층에 추가했습니다 :Psychtoolbox (알파 채널 포함)에 그레이 스케일 .png 파일을 표시 할 때 이미지가 밝은 빨간색으로 표시됩니까?

% 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 (이미지 링크)로 표시됩니다. 알파 채널에 추가되는 코드 줄을 주석 처리 할 때 배경은 더 이상 투명하지 않지만 it is in greyscale (이미지 링크)입니다.

이미지 세트 중 일부는 문제가 없지만 문제가 없습니다. 이러한 이미지는 Photoshop에서 배치 처리되었습니다. 이 문제를 나타내는 이미지는 김프에서 직접 처리 한 이미지처럼 보입니다. 그러나 전체 이미지 세트는 Psychopy에서 잘 나타납니다. (Psychopy에서이 프로젝트를 작성하는 것은 시간 제약과 일부 MATLAB 관련 기능 때문에 필요하지 않습니다.)

이 극히 한정적 인으로 추측해야한다면, 2D 행렬을 이미지 행렬에 넣으면 색상 값을 곱하는 인수가 설정됩니다. 그러나, 나는 어떻게 생각하지 못합니다. 누구든지 어떤 생각을 가지고 있니?

+0

FWIW, 그것은 암시 적으로 알파를 추가처럼 보이는 RGB가 아닌 그레이 스케일 된 가정합니다 - 당신의 도구는 "유용하게"는 G 및 B 채널을 추가

이보십시오. – usr2564301

답변

1

G 채널과 B 채널을 추가하지 않았기 때문에 0입니다! 입력 이미지가

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

감사! 이것은 완벽하게 작동합니다. – treismanwolfe