Как объединить 2 изображения RGB в DM с помощью скрипта?

Я хотел бы наложить 2 (или более) изображения RGB в Digital Micrograph с помощью сценария.

В отличие от некоторых реальных изображений без цвета, которые можно объединить путем суммирования интенсивности, изображения RGB должны быть объединены другим способом, но я понятия не имею.

Спасибо за помощь!


person Joey Wei    schedule 02.06.2016    source источник


Ответы (2)


Вы можете суммировать изображения 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
comment
Это именно то, что я ищу. Большое спасибо! Я сожалею об отсутствии определения «наложения». Что я хочу сделать, так это реализовать функцию «смешивания цветов», которая уже существует в DM, с помощью сценариев. Я не был уверен, какой режим наложения должен быть, пока не увидел все ваши испытания. Я думаю, что используется среднее значение. Еще раз спасибо за все детали! - person Joey Wei; 04.06.2016

Вы можете очень просто создать сценарий объединения изображений с помощью ImageMagick, который установлен в большинстве дистрибутивов Linux и доступен для OSX и Windows.

Поскольку вы не предоставили образцы изображений, я сделал пару — image1.png и image2.png вот так:

введите здесь описание изображения введите здесь описание изображения

Сейчас доступно множество режимов наложения. Наиболее распространенными являются Светлее, Темнее, Наложение. , Смешать. Итак, давайте попробуем несколько в командной строке терминала:

convert image1.png image2.png -compose darken -composite result.png

введите здесь описание изображения

convert image1.png image2.png -compose lighten -composite result.png

введите здесь описание изображения

convert image1.png image2.png -compose overlay -composite result.png

введите здесь описание изображения

Варианты бесконечны — вы можете получить список режимов наложения, доступных в ImageMagick, следующим образом:

identity -list compose

Вывод

Atop
Blend
Blur
Bumpmap
ChangeMask
Clear
ColorBurn
ColorDodge
Colorize
CopyBlack
CopyBlue
CopyCyan
CopyGreen
Copy
CopyMagenta
CopyOpacity
CopyRed
CopyYellow
Darken
DarkenIntensity
DivideDst
DivideSrc
Dst
Difference
Displace
Dissolve
Distort
DstAtop
DstIn
DstOut
DstOver
Exclusion
HardLight
HardMix
Hue
In
Lighten
LightenIntensity
LinearBurn
LinearDodge
LinearLight
Luminize
Mathematics
MinusDst
MinusSrc
Modulate
ModulusAdd
ModulusSubtract
Multiply
None
Out
Overlay
Over
PegtopLight
PinLight
Plus
Replace
Saturate
Screen
SoftLight
Src
SrcAtop
SrcIn
SrcOut
SrcOver
VividLight
Xor

Вот все варианты:

введите здесь описание изображения

person Mark Setchell    schedule 03.06.2016
comment
+1 за хороший обзор различных наложений RGB. Однако я думаю, что при наличии тега dm-script вопрос скорее направлен на конкретный язык сценариев DigitalMicrograph. чем обычная обработка изображений. - person BmyGuest; 03.06.2016
comment
@BmyGuest Спасибо. Я понимаю вашу точку зрения - я просто решил, что это необходимо сделать с помощью сценариев, и предположил, что любые сценарии в порядке, но я думаю, что ОП имел в виду именно dm-script. Все равно оставлю - может кому пригодится! - person Mark Setchell; 03.06.2016
comment
Я думаю, что это действительно полезно, так как очень хорошо показывает, что вам нужно определить, что означает «наложение» с большим количеством возможностей. Полезный обзор-сюжет. - person BmyGuest; 03.06.2016
comment
@MarkSetchell Большое спасибо, что сказали мне это, и да, я действительно работаю над сценариями Digital Micrograph. Но ваш обзор тоже очень полезен. Спасибо! - person Joey Wei; 04.06.2016
comment
@JoeyWei С удовольствием! Удачи с вашим проектом :-) - person Mark Setchell; 04.06.2016