0

I need to know how many pixels make up 1 degree of visual angle in order to create stimuli of the correct size to display using Python/Psychopy.

Could someone help me calculate 1 degree of visual angle (in pixels) from the following information?

Monitor: 1680 x 1050 resolution Nonitor width = 477mm (47.7cm) Monitor height = 268mm (26.8cm)

viewing distance from screen = 530mm

I've noticed a few calculators around, but they seem to already want the degree of visual angle (I guess they're working backwards from where I'm at)

Thanks, Steve

Steve
  • 327
  • 2
  • 3
  • 15

2 Answers2

3
1680 pxls/477 mm = 3.52 pxls/mm = pxldensity_x
1050 pxls/268 mm = 3.91 pxls/mm = pxldensity y 

tan (1 degree)  = 0.0174  =  rise/run = D / 530 mm  -->

 D (physical size of 1 degree on monitor)= 9.22 mm

 pixels within 1 degree (x-direction)  = D * pxldensity_x = 32 pxls
 pixels within 1 degree (y-direction)  = D * pxldensity_x = 36 pxls

The human eye has a angular resolution of about 1 arcmin (1/60 degree), therefore you could see 1/2 of a pixel on this screen, meaning you could perceive the pixelation. The limit is interestingly matched by both the lateral separation of sensors on the retina and the diffraction limit of the eye's pupil at good illumination, demonstrating the economy of evolution.

roadrunner66
  • 7,772
  • 4
  • 32
  • 38
  • Thank you very much. Shouldn't there be more pixels per 1 degree angle for the x direction, rather than the y direction? Because x is longer than y. Or have I got this wrong? – Steve Apr 04 '16 at 23:12
  • No. The density is an intensive quantity. Since you are dividing by the length, it becomes length-independent. So either the x- or the y-density could be higher, depending on the screen design. – roadrunner66 Apr 04 '16 at 23:17
  • I see. Could you tell me, at what viewing distance would I need to be for the pixel densities to come out equal? – Steve Apr 04 '16 at 23:20
  • There isn't one. The monitor is what it is , its pixels are wider than tall. If you invert the numbers I give in the first line you get the pixel size: 284 um wide by 255 um tall (um =micrometer =1/1000 of mm). – roadrunner66 Apr 04 '16 at 23:22
  • 1
    It is highly unlikely that the pixels aren't physically square. I suspect (if it is an LCD) that the screen is being run at a non-native resolution, or the physical dimensions are incorrect. – Michael MacAskill Apr 05 '16 at 01:06
  • @MichaelMacAskill Thanks for pointing that out. Many video formats were not strictly square, but most LCDs are very close. I just tried to answer his actual question based on his measurements. – roadrunner66 Apr 06 '16 at 00:17
  • @roadrunner66 Yes, agree your answer is correct, *given the information provided...* – Michael MacAskill Apr 06 '16 at 00:22
2

PsychoPy can do this for you. In the Monitor Center tell PsychoPy about the dimensions of your monitor and how far away it is from the participant's eye and then you can specify all stimulus sizes in units of 'deg'. (PsychoPy does actually assume your pixels are square though).

Actually, PsychoPy can go one step further, which is to correct for the fact that your screen is flat, which means that the corners are further away than the centre, which means 1deg is more pixels at the corner than the centre. Most people prefer everything to be equal steps across the screen even though that's slightly less accurate; it "looks" wrong when it's actually more correct.

For full info: http://www.psychopy.org/general/units.html#degrees-of-visual-angle

Jon
  • 1,198
  • 7
  • 8
  • That's brilliant, I had no idea about that. How do I find out if my screen is properly flat or not (stupid question?)? Also, If I want my stimuli to be exactly 1 degree in size (both sides), if my stimuli is too small (png), will it not just stretch the image? How do I know what size to make the stimuli in the first place? – Steve Apr 05 '16 at 20:37