1

顕微鏡イメージングを実行するための独自のソフトウェアをC#で作成しました。このスクリーンショットを参照してください。

そこに見られる画像は同じサンプルですが、物理的に異なる検出器を介して記録されています。私の実験では、これらの画像が正確に位置合わせされていることが重要です。どういうわけか2つのビットマップをブレンド/減算するのが最も簡単だと思いましたが、これでは良い結果が得られません。したがって、私はこれを行うためのより良い方法を探しています。

画像はメモリ内に強度の配列として存在し、自分で書いた画像コントロールに画面上でペイントするためにビットマップに変換されることを指摘しておくと便利かもしれません。

助けていただければ幸いです。

4

5 に答える 5

4

画像の向きとサイズが同じで、垂直方向または水平方向にわずかにずれている場合、相互相関を使用して最適な配置を見つけることができますか?

たとえば、黄色のチャネルの特徴を整列させる必要があることがわかっている場合は、黄色のチャネルを相互相関アルゴリズムにフィードして、結果のピークを見つけます。ピークは、2つの画像が最もよく並ぶオフセットで発生します。

ノイズの多い画像でも機能します。スクリーンショットのように、大幅に異なる画像でも機能すると思います。

MATLABの例:正規化された相互相関を使用した画像の登録

ウィキペディアはこれを「位相相関」と呼び、スケールや回転を不変にすることについても説明しています。

この方法を拡張して、最初に画像を対数極座標に変換することにより、2つの画像間の回転とスケーリングの違いを決定できます。フーリエ変換の特性により、回転とスケーリングのパラメータは、平行移動に対して不変な方法で決定できます。

于 2009-07-24T16:06:11.000 に答える
1

少し前にこれを解決しました...2つの検出器からの2つの画像が完全に位置合わせされていることを確認するだけでよく、そうでない場合は位置合わせを試みる必要がないため、次のように解決しました。

1)Aforge Frameworkを使用して、両方の画像にグレースケールフィルターを適用します。これにより、各ピクセルのRGB値が平均化されます。2)1つの画像に、赤のチャネルのみを保持するようにChannelFilterを適用します。3)もう一方の画像で、ChannelFilterを適用して、緑色のチャネルのみを保持します。4)両方の画像を追加します。

これが私が使用したフィルターです。必要に応じてそれらを適用するために読者に任せます(それは些細なことであり、AforgeのWebサイトに例があります)。

AForge.Imaging.Filters.IFilter filterR = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.IFilter filterG = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.GrayscaleRMY FilterGray= new AForge.Imaging.Filters.GrayscaleRMY();
AForge.Imaging.Filters.Add filterADD = new AForge.Imaging.Filters.Add();

確認したい両方の画像に重要な機能が存在する場合、それらは黄色で表示されるため、必要な処理を正確に実行できます。

すべての入力をありがとう!

于 2009-09-08T12:22:02.583 に答える
0

したがって、検出器が異なるため、画像1のピクセル(256,512)が画像2のピクセル(257,513)で表される特徴である可能性があるため、位置合わせが少し間違っています。これは問題ですか?倍率はどうですか?検出器が違うと倍率も少し違うのではないでしょうか?

上記のような意味で、スクリーンショットから判断すると、最も強度の高い4つまたは5つの領域の中心を見つけるのはそれほど難しいことではありません。データを正規化し、画像全体を調べて、隣接する9つのブロックを探します。平均強度が最も高いピクセル。各画像のこれらの特徴の4つまたは5つの中央のピクセルに注意してください。次に、2つの画像間のピクセルの各セット間の距離を計算します。

すべてのセットで距離が0の場合、2つの画像は整列している必要があります。距離が一定の場合、あなたがしなければならないのは、その距離で1つの画像を移動することだけです。距離が変化する場合は、一定になるまで1つの画像のサイズを変更してから、機能に合わせてスライドさせる必要があります。次に、2つの画像の強度値を平均することができます。これは、2つの画像が整列している必要があるためです。

とにかく、それが私が始める方法です。

于 2009-06-09T01:06:41.437 に答える
0

画像が異なるセンサーから生成された場合、一般的に問題は困難になります。あなたの画像の1つにノイズが多いように見えるので、特にあなたにとって。

センサーに反りや回転がないと仮定すると、最初に各画像の強度を正規化することをお勧めします。次に、画像間の誤差を最小化するシフトを見つけます。エラーはユークリッド(つまり、各ピクセルの差の2乗の合計)である可能性があります。それは、少なくとも私にとっては、アライメントの定義です。

于 2009-06-09T03:13:05.300 に答える
0

位置合わせできる唯一の方法は、画像に同一であることがわかっている(または既知の変換がある)特徴がある場合です。一般的なアプローチは、画像に何かを配置することです。たとえば、画像キャプチャに位置合わせアーティファクトを追加さ​​せるなど、画像を正規化するために必要な変換を簡単に検出して把握することができます。

一般的な例は、隅に+マーカーを配置することです。また、この目的で使用されるバーコードが表示される場合もあります。

このアーティファクトがなければ、サイズと向きがわかっている(そして両方の画像に存在する)何かが画像に存在する必要があります。

于 2009-06-09T14:41:15.423 に答える