2

スクリプトを使用して、デジタル顕微鏡写真に 2 つ (またはそれ以上) の RGB 画像をオーバーレイしたいと考えています。

強度を合計することでマージできる色のないいくつかの実画像とは異なり、RGB 画像は別の方法でマージする必要がありますが、私には手がかりがありません。

助けてくれてありがとう!

4

2 に答える 2

2

通常の画像と同じようにRGB画像を合計できますが、問題は「オーバーレイ」の意味を定義する必要があることです。

RGB 画像は、3 つのチャネル RED、GREEN、BLUE のそれぞれの値を保持するトリプレットであり、これらの値は [0 と 255] の間でクリップされます。

RGB 画像を「合計」すると、再びトリプレットが得られますが、255 より大きい値は 255 に切り捨てられるため、画像の「白」に向かってますますシフトします。

代わりに「オーバーレイ」を平均値として定義することもできますが、「オーバーレイ」の効果は「平均グレー」に向かってますます大きくなります。

または、関連するチャネルの「最大値」または「最小値」として「オーバーレイ」を定義することもできます。

か、か、か……。

RGB イメージを「オーバーレイ」することを考えるとき、「レイヤー」を結合できる Photoshop などの他のグラフィック プログラムを考えると役に立ちます。通常、これらのプログラムは複数のオプション ( "overlay, screen, lighten, darken, you name it..." ) を提供します。これらはすべて、最初のレイヤーの 3 つのカラー値と 2 番目のレイヤーの 3 つのカラー値の間の異なる数学的関係を定義します。

この計算を行うために必要なコマンドは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 ) カラー モデルではなく、別の色相/彩度/明るさ ( HSB ) カラー モデルに基づいていることにも注意してください。

DigitalMicrograph スクリプトはネイティブで RGB のみをサポートしますが、計算は自分で行うことができます。

また、Gatan スクリプトのサンプルサイトにあるサンプル スクリプト「HSB.s として表示」も参照してください。

于 2016-06-03T10:10:44.153 に答える
1

ほとんどの Linux ディストリビューションにインストールされており、OSX と Windows で利用できるImageMagickを使用して、イメージのマージを非常に簡単にスクリプト化できます。

サンプル画像を提供していないので、いくつか作成しました-次image1.pngimage2.pngように:

ここに画像の説明を入力 ここに画像の説明を入力

現在、利用可能なブレンド モードが多数あります。より一般的なものには、LightenDarkenOverlayBlendがあります。それでは、ターミナルのコマンド ラインでいくつか試してみましょう。

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

すべてのオプションは次のとおりです。

ここに画像の説明を入力

于 2016-06-03T11:11:23.380 に答える