You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.5 KiB
104 lines
2.5 KiB
2 years ago
|
package require vtk
|
||
|
|
||
|
# This script calculates the luminanace of an image
|
||
|
|
||
|
vtkRenderWindow imgWin
|
||
|
imgWin SetSize 512 256
|
||
|
|
||
|
# Image pipeline
|
||
|
|
||
|
vtkTIFFReader image1
|
||
|
image1 SetFileName "$VTK_DATA_ROOT/Data/beach.tif"
|
||
|
|
||
|
vtkBMPReader image2
|
||
|
image2 SetFileName "$VTK_DATA_ROOT/Data/masonry.bmp"
|
||
|
|
||
|
# shrink the images to a reasonable size
|
||
|
|
||
|
vtkImageShrink3D color
|
||
|
color SetInputConnection [image1 GetOutputPort]
|
||
|
color SetShrinkFactors 2 2 1
|
||
|
|
||
|
vtkImageShrink3D backgroundColor
|
||
|
backgroundColor SetInputConnection [image2 GetOutputPort]
|
||
|
backgroundColor SetShrinkFactors 2 2 1
|
||
|
|
||
|
# create a greyscale version
|
||
|
|
||
|
vtkImageLuminance luminance
|
||
|
luminance SetInputConnection [color GetOutputPort]
|
||
|
|
||
|
vtkImageLuminance backgroundLuminance
|
||
|
backgroundLuminance SetInputConnection [backgroundColor GetOutputPort]
|
||
|
|
||
|
# create an alpha mask
|
||
|
|
||
|
vtkLookupTable table
|
||
|
table SetTableRange 220 255
|
||
|
table SetValueRange 1 0
|
||
|
table SetSaturationRange 0 0
|
||
|
table Build
|
||
|
|
||
|
vtkImageMapToColors alpha
|
||
|
alpha SetInputConnection [luminance GetOutputPort]
|
||
|
alpha SetLookupTable table
|
||
|
alpha SetOutputFormatToLuminance
|
||
|
|
||
|
# make luminanceAlpha and colorAlpha versions
|
||
|
|
||
|
vtkImageAppendComponents luminanceAlpha
|
||
|
luminanceAlpha AddInput [luminance GetOutput]
|
||
|
luminanceAlpha AddInput [alpha GetOutput]
|
||
|
|
||
|
vtkImageAppendComponents colorAlpha
|
||
|
colorAlpha AddInput [color GetOutput]
|
||
|
colorAlpha AddInput [alpha GetOutput]
|
||
|
|
||
|
set foregrounds "luminance luminanceAlpha color colorAlpha"
|
||
|
set backgrounds "backgroundColor backgroundLuminance"
|
||
|
|
||
|
set column 1
|
||
|
set row 1
|
||
|
set deltaX [expr 1.0/4.0]
|
||
|
set deltaY [expr 1.0/2.0]
|
||
|
|
||
|
foreach background $backgrounds {
|
||
|
foreach foreground $foregrounds {
|
||
|
vtkImageBlend blend${row}${column}
|
||
|
blend${row}${column} AddInput [$background GetOutput]
|
||
|
if { $background == "backgroundColor" || $foreground == "luminance" || $foreground == "luminanceAlpha" } {
|
||
|
blend${row}${column} AddInput [$foreground GetOutput]
|
||
|
blend${row}${column} SetOpacity 1 0.8
|
||
|
}
|
||
|
|
||
|
vtkImageMapper mapper${row}${column}
|
||
|
mapper${row}${column} SetInputConnection [blend${row}${column} GetOutputPort]
|
||
|
mapper${row}${column} SetColorWindow 255
|
||
|
mapper${row}${column} SetColorLevel 127.5
|
||
|
|
||
|
vtkActor2D actor${row}${column}
|
||
|
actor${row}${column} SetMapper mapper${row}${column}
|
||
|
|
||
|
vtkRenderer imager${row}${column}
|
||
|
imager${row}${column} AddActor2D actor${row}${column}
|
||
|
|
||
|
imager${row}${column} SetViewport [expr ($column - 1) * $deltaX] [expr ($row - 1) * $deltaY] [expr $column * $deltaX] [expr $row * $deltaY]
|
||
|
|
||
|
imgWin AddRenderer imager${row}${column}
|
||
|
|
||
|
incr column
|
||
|
}
|
||
|
incr row
|
||
|
set column 1
|
||
|
}
|
||
|
|
||
|
imgWin Render
|
||
|
|
||
|
wm withdraw .
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|