Flicker Task
Version: v1 (current)
A change detection paradigm using alternating images to reveal attentional limits in visual perception.
Overview
The Flicker task is closely related to the Change Blindness paradigm. Two versions of an image alternate with a brief blank interval. One contains a change, the other does not. The rapid alternation (flicker) helps detect changes by creating a local motion signal, yet substantial changes often go unnoticed for many seconds, revealing the sparse nature of visual representations.
This task demonstrates that without attention directed to the changing region, even large alterations remain invisible. It's used to study visual attention, scene perception, and the role of transients in change detection.
Scientific Background
Classic Findings:
- Flicker Advantage: Easier than one-shot change detection but still challenging
- Attention Dependence: Unattended changes remain invisible despite flicker
- Change Magnitude: Larger changes detected faster, but even huge changes can be missed
Seminal Paper:
- Rensink, O'Regan, & Clark (1997): To see or not to see: The need for attention to perceive changes
Why Researchers Use This Task
- Attention Research: Study role of attention in change detection
- Applied Vision: Train observers (radiologists, security) to detect anomalies
- Scene Perception: Understand what we encode from visual scenes
- Aging Studies: Assess age-related changes in attention and perception
Where to Configure
Study Form → Tasks → Flicker → Configure.
Configuration Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Canvas Width (px) | number | 800 | Display canvas width (min 400, max 1920) |
| Canvas Height (px) | number | 600 | Display canvas height (min 300, max 1080) |
| Enable Practice | boolean | true | Show a practice round (with feedback) before the main trials |
Timing (flicker rate, blank duration), the change location, and the click region are configured per trial in the trial spreadsheet, not as global parameters.
Trial Spreadsheet Columns
Both the main and practice trial tables use the same 8 columns:
| Column | Type | Default | Description |
|---|---|---|---|
| Image A URL | text | — | URL of the first image |
| Image B URL | text | — | URL of the second (changed) image |
| Change X | number | 0 | X coordinate of the change centre (image content coordinates) |
| Change Y | number | 0 | Y coordinate of the change centre |
| Region Size (px) | number | 50 | Radius of the correct-click region around the change |
| Flicker Rate (ms) | number | 250 | Duration each image is shown (min 50) |
| Blank (ms) | number | 80 | Duration of the blank between images |
| Block | text | — | Block label for the trial |
A trial is only kept when both Image A URL and Image B URL are provided.
Participant Flow
- The participant sees the first image displayed on screen.
- After the Image Duration, a brief blank screen appears for the Blank Duration.
- The second image (with or without a change) is displayed.
- The cycle repeats (image A, blank, image B, blank) until the participant detects the change or the per-trial cycle limit is reached.
- The participant clicks on the change location when they notice it. The click is scored correct when it falls within the change region, and the time to detection is recorded.
Data Output
Markers and Responses
The task records high-resolution timestamps in two separate collections:
Markers
| Marker | Key data fields | Description |
|---|---|---|
flicker_trial_start | trial_index (or practice_trial_index), is_practice, stimulus_id, image_a_url, image_b_url, change_x, change_y, flicker_rate_ms, blank_duration_ms, fixation_ms, max_cycles | Trial onset (practice prefix: flicker_practice_trial_start) |
image_a_onset | stimulus_id, image_a_url, image_b_url, change_x, change_y, cycle | Image A presented (emitted at trial start and on every return to A) |
image_b_onset | stimulus_id, image_b_url, cycle | Image B presented |
blank_phase_onset | stimulus_id, cycle, after_image_a | Blank screen between images |
stimulus_aoi | stimulus_id, stimulus_bounds, aois (change_region) | Canvas bounds and change-region AOI |
feedback_shown | practice_trial_index, feedback_correct | Practice feedback (practice only; not emitted when the stimulus failed to load) |
response_recorded | trial_index (or practice_trial_index), is_practice | Response logged |
flicker_image_load_failed | trial_index (or practice_trial_index), is_practice, stimulus_id, image_a_url, image_b_url | Image A and/or image B failed to load or decode; no stimulus was ever shown for this trial |
Marker names are prefixed with the task slug (flicker_). During practice the index field is practice_trial_index instead of trial_index.
Response Data:
{
"trial_index": 1,
"is_practice": false,
"stimulus_id": "flicker_0_1",
"source": "button",
"responded": true,
"valid_trial": true,
"image_a_url": "https://example.com/scene1a.jpg",
"image_b_url": "https://example.com/scene1b.jpg",
"change_x": 350,
"change_y": 200,
"click_x": 355,
"click_y": 198,
"detection_correct": true,
"detection_time_ms": 5420,
"flicker_cycles": 8,
"block": "main",
"latency_ms": 5420
}
source is one of button (participant click), timeout (cycle limit reached), moderator_advance (moderator forced completion), or image_load_failed (the stimulus image(s) failed to load or decode, so no valid stimulus was ever shown). valid_trial is false only for image_load_failed; such a trial carries no meaningful detection data and is excluded from the summary artifact's accuracy/timing statistics. latency_ms is only present when a detection time was measured (never on image_load_failed).
Image loading robustness: images are loaded as plain (non-crossOrigin) elements, since the canvas is only ever drawn to, never read back as pixel data. If an image fails to load or decode, the participant sees a plain, non-technical message (not a raw browser error) instead of a blank canvas, the trial is marked source: "image_load_failed" / valid_trial: false, and a flicker_image_load_failed marker is recorded.
Summary Artifact
A JSON file (flicker_summary_<taskIndex>.json) with aggregated statistics:
{
"task_kind": "flicker",
"task_index": 0,
"overall": {
"total": 10,
"valid_clicks": 9,
"correct_detections": 7,
"accuracy": 0.78,
"mean_detection_time_ms": 5420,
"median_detection_time_ms": 5300,
"mean_cycles_to_detection": 8,
"timeouts": 1
},
"breakdowns": {},
"extras": {
"total_trials": 10
},
"trials": [ /* per-trial data */ ],
"practice": { /* same { overall, breakdowns, extras, trials } structure, present only if practice was enabled and ran */ }
}
Key metrics:
detection_correct: Whether click was within the correct change regiondetection_time_ms: Time from trial start to clickflicker_cycles: Number of complete A-B-A cycles before detectionaccuracy: Proportion of correct detections
Design Recommendations
- Image Pairs: Use high-resolution images with clearly defined change regions. The change should be meaningful (e.g., object removal, color shift).
- Blank Duration: 80 ms is standard; shorter blanks make changes easier to detect, longer blanks increase difficulty.
- Cycle Limit: Set Max Cycles high enough so most participants can find the change, but not so high that frustrated participants stall.
- Practice Trials: Include a practice round with an obvious change so participants understand the task.
- Counterbalancing: Randomize which image (A or B) contains the change across trials.
Common Issues and Solutions
| Issue | Solution |
|---|---|
| Participants cannot find the change | Increase image duration or reduce blank duration; ensure the change is large enough |
| Changes detected too quickly | Decrease image duration or increase blank duration; use subtler changes |
| Timing feels inconsistent | Ensure images are preloaded before the trial starts to avoid loading delays |
| Participants click randomly | Add instructions emphasizing accuracy; consider requiring participants to indicate the change location |
| Canvas appears blank | If Image A/B URLs point to files the browser cannot fetch or decode (broken link, unsupported format), the participant sees a plain error message rather than a blank canvas, and the trial is recorded as source: "image_load_failed" (excluded from accuracy/timing stats). Verify the image URLs are reachable and in a supported format (JPEG/PNG/WebP). |
References
- Rensink, R. A., O'Regan, J. K., & Clark, J. J. (1997). To see or not to see: The need for attention to perceive changes in scenes. Psychological Science, 8(5), 368-373.
- Simons, D. J., & Rensink, R. A. (2005). Change blindness: Past, present, and future. Trends in Cognitive Sciences, 9(1), 16-20.
See Also
- Attentional Blink - Temporal attention limits