Gabor patches in matlab

17 ビュー (過去 30 日間)
Stephen Pierzchajlo
Stephen Pierzchajlo 2017 年 5 月 30 日
編集済み: Kushagr Gupta 2017 年 6 月 8 日
Hi all. My lab is interested in using gabor patches in a new study and I have found some code online for creating them. However, I do not typically use matlab or code much and have run into a bit of a problem. The code creates a gabor patch on a grey background and allows you to easily adjust contrast, angle of display, etc. The problem is that I want to view the gabor patch as an image (using imagesc for instance) so that I can save the image and use it in eprime. Unfortunately, the code opens the image as a program so that it is displayed in full screen and requires me to press a key to get out. Could someone look at the code and give me some tips as to what I might do to change it so that the gabor opens in imagesc or some other image viewer? Thanks.
if true
% Setup PTB with some default values
PsychDefaultSetup(2);
% Set the screen number to the external secondary monitor if there is one
% connected
screenNumber = max(Screen('Screens'));
% Define black, white and grey
white = WhiteIndex(screenNumber);
grey = white / 2;
% Skip sync tests for demo purposes only
Screen('Preference', 'SkipSyncTests', 2);
% Open the screen
[window, windowRect] = PsychImaging('OpenWindow', screenNumber, grey, [], 32, 2,...
[], [], kPsychNeed32BPCFloat);
% Dimension of the region where will draw the Gabor in pixels
gaborDimPix = windowRect(4) / 2;
% Sigma of Gaussian
sigma = gaborDimPix / 7;
% Obvious Parameters
orientation = 0;
contrast = 0.8;
aspectRatio = 1.0;
phase = 0;
% Spatial Frequency (Cycles Per Pixel)
% One Cycle = Grey-Black-Grey-White-Grey i.e. One Black and One White Lobe
numCycles = 5;
freq = numCycles / gaborDimPix;
% Build a procedural gabor texture (Note: to get a "standard" Gabor patch
% we set a grey background offset, disable normalisation, and set a
% pre-contrast multiplier of 0.5.
backgroundOffset = [0.5 0.5 0.5 0.0];
disableNorm = 1;
preContrastMultiplier = 0.5;
gabortex = CreateProceduralGabor(window, gaborDimPix, gaborDimPix, [],...
backgroundOffset, disableNorm, preContrastMultiplier);
% Randomise the phase of the Gabors and make a properties matrix.
propertiesMat = [phase, freq, sigma, contrast, aspectRatio, 0, 0, 0];
% Draw the Gabor. By default PTB will draw this in the center of the screen
% for us.
Screen('DrawTextures', window, gabortex, [], [], orientation, [], [], [], [],...
kPsychDontDoRotation, propertiesMat');
% Flip to the screen
Screen('Flip', window);
% Wait for a button press to exit
KbWait;
% Clear screen
sca;
end

回答 (1 件)

Kushagr Gupta
Kushagr Gupta 2017 年 6 月 8 日
編集済み: Kushagr Gupta 2017 年 6 月 8 日
The code shared here is not complete and does not include the implementation of the 'screen' function which is not a MATLAB inbuilt function. That function is responsible for displaying the gabor patch on entire screen and you can modify its definition to suit your requirement.
That being said, I believe, the variable "gabortex" is what you are interested in and you can pass that to imagesc and save it in a MAT file.

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by