CompStart

ProLessonsCoursesElementsSoftware

CompStart

Learn visual effects with cutting-edge techniques.

Learning

CoursesLessonsPro FeaturesAssetsSoftware

Tools

Tech CheckDisplay CheckMotion BlurPhysLightNuke Tools

Company

InstructorMissionSitemapPrivacyTerms

Projects

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreadsContact

© 2026 CompStart. All rights reserved.

Dead Pixel Finder

ToolSets / Utility
Utility

2026-09-07

ToolSets/utility/deadPixelFinder.nk

utility
dead pixel
plate
QC
TimeEcho
review
sensor
View on GitHub

Highlights stuck or dead pixels in a plate by comparing frames over time, for interactive review in the Nuke GUI.

Dead Pixel Finder spots stuck or dead pixels in footage by looking back across a range of frames and isolating tiny static differences so fixed sensor defects stand out against moving image content.

Use it on plates before you lock a comp when you need a quick visual check for hot or dead pixels that stay in one place.

In the GUI, Frames to look at controls how many prior frames are included. The node processes and holds the result so defects read clearly. Outside the GUI it outputs a zeroed image, so it is meant for interactive checks rather than render output.

Script code

set cut_paste_input [stack 0]
version 12.1 v4
push $cut_paste_input
Group {
 name deadPixelFinder
 tile_color 0x421010ff
 selected true
 xpos -1103
 ypos 99
 addUserKnob {20 User l deadPixelFinder}
 addUserKnob {41 framesbehind l "Frames to look at" T TimeEcho1.framesbehind}
 addUserKnob {26 ""}
 addUserKnob {26 lbl l "" t "May 15, 2019 - v1.1 Refined\nMay 15, 2019 - v1.2 Gui only" +STARTLINE T "Dead Pixel Finder v1.2"}
 addUserKnob {22 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
}
 Input {
  inputs 0
  name Input
  xpos 447
  ypos 61
 }
 Dot {
  name Dot1
  note_font_size 40
  xpos 481
  ypos 215
 }
set Nd7a4800 [stack 0]
 Dot {
  name Dot2
  note_font_size 40
  xpos 640
  ypos 215
 }
 Invert {
  channels rgb
  name Invert3
  xpos 606
  ypos 351
 }
 TimeEcho {
  framesbehind 60
  name TimeEcho1
  selected true
  xpos 606
  ypos 411
  disable {{"!\$gui"}}
 }
 Invert {
  channels rgb
  name Invert4
  xpos 606
  ypos 474
 }
 Dot {
  name Dot170
  note_font_size 40
  xpos 640
  ypos 554
 }
set Nd7d5400 [stack 0]
 Dot {
  name Dot4
  note_font_size 40
  xpos 849
  ypos 554
 }
 Colorspace {
  colorspace_out Cineon
  name Colorspace1
  xpos 815
  ypos 635
 }
 Blur {
  channels rgba
  size 0.67
  name Blur18
  label "\[value size] px"
  xpos 815
  ypos 689
 }
 Dot {
  name Dot5
  note_font_size 40
  xpos 849
  ypos 769
 }
push $Nd7d5400
 Colorspace {
  colorspace_out Cineon
  name Colorspace2
  xpos 606
  ypos 644
 }
 Merge2 {
  inputs 2
  operation difference
  bbox B
  name Merge83
  xpos 606
  ypos 765
 }
 Grade {
  whitepoint 0.0002
  gamma 0.455
  name Grade20
  xpos 606
  ypos 805
 }
 FrameHold {
  first_frame {{last_frame}}
  name FrameHold1
  xpos 606
  ypos 849
 }
 Dot {
  name Dot3
  note_font_size 40
  xpos 640
  ypos 939
 }
push $Nd7a4800
 Remove {
  operation keep
  channels rgba
  name Remove1
  label "\[value channels]"
  xpos 447
  ypos 343
 }
 Multiply {
  channels rgba
  value 0
  name Multiply1
  label "\[value value]"
  xpos 447
  ypos 413
 }
 Switch {
  inputs 2
  which {{"\$gui"}}
  name Switch1
  label "\[value which]"
  xpos 447
  ypos 929
 }
 Output {
  name Output1
  xpos 447
  ypos 1055
 }
end_group