0

現在、Psychtoolbox に表示されるグレースケールの .png 画像をいくつか準備しています。これらの .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

これらの画像を表示すると、背景は確かに透明になります。ただし、グレースケールではなく明るい赤としても表示されます(画像へのリンク)。アルファ チャネルを追加するコード行をコメント アウトすると、背景は透明ではなくなりますが、グレースケールになります (画像へのリンク)。

セット内の画像の一部は、問題なく問題なく表示されます。これらの画像は、Photoshop でバッチ処理されました。問題のある画像は、GIMP で手作業で処理された画像のようです。ただし、画像セット全体は Psychopy で問題なく表示されます。(時間の制約といくつかの MATLAB 固有の関数が必要なため、このプロジェクトを Psychopy で作成することはできません。)

私の非常に限られた知識で推測する必要がある場合、4 番目の 2D マトリックスを画像マトリックスに追加すると、色の値を乗算する引数がオフになると言えます。しかし、方法がわかりません。誰でも何か考えがありますか?

4

1 に答える 1

1

G チャネルと B チャネルを追加していないため、これらはゼロです。

これを試して:

pngImage(:,:,2) = pngImage(:,:,1); 
pngImage(:,:,3) = pngImage(:,:,1); 
pngImage(:,:,4) = alpha; % add in the alpha channel
于 2016-11-14T12:38:23.653 に答える