2009-06-08 50 views
1

我已經用C#編寫了自己的軟件來執行顯微成像。看到這screenshot檢查圖像特徵對齊

在那裏可以看到的圖像具有相同的樣本,但通過物理上不同的檢測器記錄。對於我的實驗來說,這些圖像對齊確切地說是是至關重要的。我認爲最簡單的方法是以某種方式混合/減去兩個位圖,但這並不能給我帶來好的結果。因此我正在尋找更好的方法來做到這一點。

指出圖像在內存中以強度數組的形式存在,並將其轉換爲用於屏幕上繪製的位圖到我自寫的圖像控件可能很有用。

我將不勝感激任何幫助!

+1

請定義「完全對齊」的含義。完全一致的定義是什麼? – 2009-06-08 23:03:23

+0

請參閱下面的進一步描述! – Kris 2009-06-09 15:25:34

+0

「完全一致」是什麼意思?你的意思是你需要水平和垂直移動它們,使它們在空間上對齊,或者你的意思是「對齊」的其他內容。他們已經看起來一致,不是嗎? – endolith 2009-07-24 00:14:33

回答

1

我得到了圍繞解決這前一段時間......因爲我只需要驗證來自兩個探測器兩個圖像完全一致,因爲我沒有去嘗試和調整他們,如果他們不是我解決它像這樣:

1)使用Aforge Framework並對兩個圖像應用灰度過濾器。這將平均每個像素的RGB值。 2)在一個圖像上應用一個ChannelFilter來僅保留紅色通道。 3)在另一張圖片上,應用ChannelFilter僅保留綠色通道。 4)添加這兩個圖像。

下面是我使用的過濾器,如果需要,我將它留給讀者來應用(這很簡單,並且在Aforge網站上有示例)。

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(); 

當我想檢查兩幅圖像中的重要特徵時,它們將以黃色顯示,從而完全符合我的需要。

感謝您的所有意見!

0

因此,探測器是不同的,所以對齊會有點不對,因爲圖像1中的像素(256,512)可能是圖像2中像素(257,513)所代表的特徵。是這個問題嗎?放大怎麼樣?如果檢測器不同,放大倍數是否也不會稍有不同?

如果你的意思是像上面那樣,並從截圖判斷,找到4或5個最高強度區域的中心不應該太困難 - 規範化數據並瀏覽整個圖像尋找具有最高平均強度的9個相鄰像素塊。注意每個圖像的四個或五個這些特徵的中心像素。然後計算兩幅圖像之間每組像素之間的距離。

如果所有組的距離爲0,則兩個圖像應該對齊。如果距離恆定,您只需移動一個距離即可。如果距離不同,您需要調整一個圖像的大小直到它保持不變,然後將其滑動以匹配這些特徵。然後,您可以平均兩張圖像的強度值,因爲它們應該對齊。

無論如何,這就是我的開始。

+0

請參閱下面的進一步描述! – Kris 2009-06-09 15:24:32

0

如果圖像是從不同的傳感器生成的,那麼通常這個問題將會很困難。特別是對於你來說,因爲你的一個圖像似乎有很多噪音。

假設傳感器沒有翹曲或旋轉,那麼我建議你首先對每幅圖像的強度進行歸一化。然後找到最小化圖像間誤差的偏移。誤差可以是歐幾里得(即每個像素的平方差的總和)。至少對我來說,這是對齊的定義。

+0

請參閱下面的進一步描述! – Kris 2009-06-09 15:23:52

0

您可以對齊的唯一方法是如果圖像中存在某些已知是相同(或已知轉換)的功能。一種常用的方法是在圖像中添加東西 - 例如圖像捕獲會添加對齊僞像 - 這些東西易於檢測並找出歸一化圖像所需的轉換。

一個常見的例子是在角落放置+標記。您可能還會看到有時用於此目的的條形碼。

沒有這個工件,圖像中的大小和方向是已知的(並且存在於兩個圖像中)。

4

如果圖像方向相同且大小相同,但縱向或橫向略有偏移,您是否可以使用互相關來找到最佳對齊方式?

例如,如果您知道黃色通道中的要素需要排列起來,則只需將黃色通道饋送到互相關算法中,然後在結果中找到峯值。峯值將出現在兩幅圖像排列最好的偏移處。

即使在嘈雜的圖像下也能正常工作,並且我懷疑它甚至可以用於顯示截然不同的圖像。

MATLAB例如:Registering an Image Using Normalized Cross-Correlation

維基百科稱此爲「phase correlation」並且還描述making it scale- and rotation-invariant

的方法可以擴展由第一轉換圖像,以記錄到確定旋轉和兩個圖像之間的縮放差異-極座標。由於傅立葉變換的特性,旋轉和縮放參數可以以對平移不變的方式確定。