diff --git a/stimuli/illusions/overview.py b/stimuli/illusions/overview.py index 4f8b18a0..406a1f4f 100644 --- a/stimuli/illusions/overview.py +++ b/stimuli/illusions/overview.py @@ -60,7 +60,7 @@ # Dungeon "Dungeon": dungeon.dungeon_illusion(**p, n_cells=5), # Frames - "Frames": frames(**p, frequency=0.5, target_indices=(1, 3)), + "Frames": frames(**p, frequency=0.5, target_indices=3), "Bullseye": bullseye(**p, frequency=0.5), # Grating "Grating with targets": grating.square_wave(**p, frequency=0.5, target_indices=(3, 6)), @@ -81,6 +81,7 @@ "Todorovic rectangle": todorovic.todorovic_rectangle(**p, target_size=4, covers_size=2, covers_offset=2), "Todorovic cross, general": todorovic.todorovic_cross_generalized(**p, cross_size=4, cross_arm_ratios=1., cross_thickness=2, covers_size=2, covers_x=(2, 6), covers_y=(2, 6)), "Todorovic cross": todorovic.todorovic_cross(**p, cross_size=4, cross_thickness=2, covers_size=2), + "Todorovic equal": todorovic.todorovic_equal(**p, cross_size=4, cross_thickness=2), # Wedding cake "Wedding cake": wedding_cake.wedding_cake_stimulus(**p, L_size=(3, 3, 1), target_height=1, target_indices1=((1, 1), (2, 1)),), # White @@ -94,4 +95,4 @@ if __name__ == "__main__": - plot_stimuli(stims, mask=True, save=None) + plot_stimuli(stims, mask=False, save=None) diff --git a/stimuli/illusions/todorovic.py b/stimuli/illusions/todorovic.py index 1ad01055..9684f39e 100644 --- a/stimuli/illusions/todorovic.py +++ b/stimuli/illusions/todorovic.py @@ -371,6 +371,68 @@ def todorovic_cross( return stim +def todorovic_equal( + visual_size=None, + ppd=None, + cross_size=None, + cross_thickness=None, + intensity_background=0.0, + intensity_target=0.5, + intensity_covers=1.0, +): + """ + Todorovic's illusion with cross target and four rectangular covers added at inner cross corners + + Parameters + ---------- + visual_size : float or (float, float) + size of the stimulus in degrees of visual angle (height, width) + ppd : int + pixels per degree (visual angle) + cross_size : float or (float, float) + size of target cross in visual angle + cross_thickness : float + thickness of target cross in visual angle + intensity_background : float + intensity value for background + intensity_target : float + intensity value for target + intensity_covers : float + intensity value for covers + + Returns + ------- + A stimulus dictionary with the stimulus ['img'] and target mask ['mask'] + + References + ----------- + Blakeslee, B., & McCourt, M. E. (1999). A multiscale spatial filtering account of the + White effect, simultaneous brightness contrast and grating induction. Vision + Research, 39, 4361–4377. + Pessoa, L., Baratoff, G., Neumann, H., & Todorovic, D. (1998). Lightness and junctions: + variations on White’s display. Investigative Ophthalmology and Visual Science + (Supplement), 39, S159. + Todorovic, D. (1997). Lightness and junctions. Perception, 26, 379–395. + """ + if isinstance(cross_size, (float, int)): + cross_size = (cross_size, cross_size) + + covers_size = ((cross_size[0] - cross_thickness) / 2, + (cross_size[1] - cross_thickness) / 2) + + stim = todorovic_cross( + visual_size=visual_size, + ppd=ppd, + cross_size=cross_size, + cross_thickness=cross_thickness, + covers_size=covers_size, + intensity_background=intensity_background, + intensity_target=intensity_target, + intensity_covers=intensity_covers, + ) + return stim + + if __name__ == "__main__": from stimuli.utils import plot_stimuli @@ -395,5 +457,6 @@ def todorovic_cross( covers_size=2, covers_x=(2, 6), covers_y=(2, 6)), + "Todorovic equal": todorovic_equal(**params, cross_size=4, cross_thickness=2), } plot_stimuli(stims, mask=True, save=None) diff --git a/stimuli/papers/RHS2007.py b/stimuli/papers/RHS2007.py index 600db340..f725bc5a 100644 --- a/stimuli/papers/RHS2007.py +++ b/stimuli/papers/RHS2007.py @@ -1057,17 +1057,16 @@ def todorovic_equal(ppd=PPD, pad=True): "ppd": ppd, "cross_size": 8.0, "cross_thickness": 1.6, - "covers_size": 3.2, "intensity_target": v2, } - stim1 = illusions.todorovic.todorovic_cross( + stim1 = illusions.todorovic.todorovic_equal( intensity_background=1.0, intensity_covers=0.0, **params, ) - stim2 = illusions.todorovic.todorovic_cross( + stim2 = illusions.todorovic.todorovic_equal( intensity_background=0.0, intensity_covers=1.0, **params,