Вы можете суммировать изображения RGB так же, как и обычные изображения, но ваша проблема в том, что вам нужно определить, что вы подразумеваете под «наложением».
Изображения RGB представляют собой триплеты, содержащие значение для каждого из трех каналов КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ, и эти значения обрезаются между [0 и 255].
«Суммирование» изображений RGB снова даст вам триплет, но любое значение больше 255 усекается до 255, поэтому вы все больше и больше смещаетесь в сторону «белого» изображения.
Вместо этого вы могли бы определить «наложение» как средние значения, но эффект «наложения» тогда становится все больше и больше ближе к «среднему серому».
Или вы можете определить «наложение» как «максимальные значения» или «минимальные значения» задействованных каналов.
Or, or, or....
Когда вы думаете о «наложении» изображений RGB, полезно подумать о других графических программах, таких как Photoshop, которые позволяют вам комбинировать «слои». Обычно эти программы предлагают несколько вариантов ("наложение, экранирование, осветление, затемнение, как угодно..."), каждый из которых определяет различное математическое соотношение между тремя значениями цвета первого и трех цветов. цветовые значения второго слоя.
Для выполнения этой математики вам понадобятся команды RGB( )
, RED( )
, GREEN( )
и BLUE( )
, а также простые математические операции. См. пример:
image img1r := RealImage("Red 1",4,256,256)
image img1g := RealImage("Green 1",4,256,256)
image img1b := RealImage("Blue 1",4,256,256)
img1r = icol/iwidth * 256
img1b = iradius/iwidth * 256
img1g = irow/iwidth * 256
RGBImage img1 = RGB(img1r,img1g,img1b)
img1.Setname( "Image 1 (RGB)")
image img2r := RealImage("Red 2",4,256,256)
image img2g := RealImage("Green 2",4,256,256)
image img2b := RealImage("Blue 2",4,256,256)
img2r = (icol%10)<5 ? 256 : 100
img2g = (irow%10)<5 ? 256 : 100
img2b = (iradius%10)<5 ? 256 : 100
RGBImage img2 = RGB(img2r,img2g,img2b)
img2.Setname( "Image 2 (RGB)")
image sumImg = img1 + img2
sumImg.SetName( "SUM" )
image avImg = (img1 + img2)/2
avImg.SetName( "AVERAGE" )
image maxImg = RGB( max(red(img1),red(img2)), max(green(img1),green(img2)), max(blue(img1),blue(img2)))
maxImg.SetName( "Channel MAX" )
image minImg = RGB( min(red(img1),red(img2)), min(green(img1),green(img2)), min(blue(img1),blue(img2)))
minImg.SetName( "Channel MIN" )
// Arrange display
EGUPerformActionWithAllShownImages( "delete" )
minImg.ShowImage()
maxImg.ShowImage()
avImg.ShowImage()
sumImg.ShowImage()
img2.ShowImage()
img1.ShowImage()
TagGroup layout = SLMCreateGridLayout( 2 , 3 )
EGUArrangeAllShownImagesInLayout( layout )
а>
Следует также отметить, что некоторые комбинации «наложения» не основаны на красном/зеленом/синем (RGB), но на альтернативном цвете Hue/Saturation/Brightness (HSB) модель.
Сценарии DigitalMicrograph изначально поддерживают только RGB, но вы можете самостоятельно произвести математические расчеты.
Вам также может быть полезно взглянуть на примеры скриптов "Отображать как HSB.s" на сайте пример скрипта Gatan.
person
BmyGuest
schedule
03.06.2016