Tek moleküllerin bir görüntüsünden DNA liflerinin uzunluğunun ölçülmesi


14

Görüntü işleme konusunda çok az deneyime sahip bir biyologum ancak yeterli MATLAB bilgisine ve görüntü işleme araç kutusuna sahibim. İdeal olarak MATLAB tabanlı bir çözüm arıyorum, ancak bunun nasıl yapılacağını özetleyen bir yaklaşım da yardımcı olacaktır.

Güncelleme (28 Kasım 2011) Bileşik görüntüler (ilk soruda sunduğum şey) kullanılırken bazı sorunlar (sinyal ve renk tanımında örtüşmeler gibi) olduğu anlaşılıyor. 2 kanaldan ayrı görüntüler ekliyorum : yeşil resim açıklamasını buraya girinve kırmızı resim açıklamasını buraya girin(bileşik görüntüdeki turkuaz bölgeler göz ardı edilebilir) ve kopozit görüntü resim açıklamasını buraya girin. Kırmızı kanal 2 nedenden ötürü kötüdür: 1. Yüksek arkaplan nedeniyle zayıf kontrastı vardır, 2. Kırmızı arkaplan seviyesinde yeşile kanar gibi görünüyor.

Bir özellik , bileşik görüntüde Yeşil-Kırmızı-turkuaz-Kırmızı-Yeşil veya eşdeğer olarak yeşil ve kırmızıda doğrusal ve bulaşıcı olan 2 bitişik doğrusal segmente sahip bir bölge olarak tanımlanır.

İki ayrı kanaldan görüntülere bakmanın özelliklerin tanımlanmasını kolaylaştırmasını umuyorum.

Algoritma için aşağıdaki öneriler var:

  1. Önce ko-lineer yeşil segmentleri belirleyin (ve yeşil segmentlerin uzunluklarını belirleyin)

  2. Kırmızı kanalda birbirine bakan bitişik bulaşıcı ve lineer segmentler (yani yeşil-> kırmızı-> <-kırmızı <-yeşil) olup olmadığını belirleyin. Evet ise, kırmızı segment uzunluğunu, yeşil segmentlerin bittiği noktadan (yeşil segmentlerle çakışacaklarından), kırmızı segmentte, özelliğin diğer kırmızı segmentine en yakın noktaya kadar tanımlayın. (yani kırmızı segmentin uçlarından biri üst üste binen yeşil segmentin sonuna ayarlanmıştır).

Çok teşekkürler!

Arkaplan :

Benim sorum bir görüntüden ayıklama özelliği ile ilgili:

resim açıklamasını buraya girin

Orijinal görüntü (tif) burada bulunur:

Resim örneği 1 (dropbox)

Bu görüntü 3 kanaldan oluşan bir bileşiktir (tif formatında): kırmızı, yeşil ve turkuaz. Turkuaz renkli lifler lamel üzerindeki tüm DNA'ları işaretler. İlgilenilen özellik, görüntünün ortasındaki tek DNA dizisindeki Yeşil-Kırmızı - turkuaz - Kırmızı-Yeşil özelliğidir.

Kırmızı genellikle en gürültülüdür. Bu örnek iyi çünkü kontrast iyi. Bununla birlikte, bazen görüntüler çok hoş değildir ve görüntü boyunca renk tonu vardır, bu nedenle yeşil ve kırmızı renk için belirli bir RGB değerini zor kodlamak tüm görüntüler için çalışmayabilir. Ayrıca, liflerin mutlaka yatay olmadığını, döndürülebileceğini (ancak asla dikey olmadığını) unutmayın.

Bir örnek için lütfen bu resme bakın:

resim açıklamasını buraya girin Orijinal görüntü (tif) burada bulunur:

Resim örneği 2 (dropbox)

Ayrıca, bazen tek bir görüntü bu tür birçok özelliğe sahiptir ve bazen aynı DNA zincirinde birden fazla özellik vardır. Son olarak bazen sadece kısmi özellikler olabilir (örneğin, izole edilmiş yeşil veya izole edilmiş kırmızı veya izole edilmiş yeşil-kırmızı segmentler, ancak eşleştirilmemiş).

Soru:

Birisi yeşil ve kırmızı segmentlerin bireysel bölümlerinin uzunluklarını elde etmeme yardımcı olabilirse minnettar olurum, yani ilgi özelliği Yeşil-Kırmızı - turkuaz - Kırmızı-Yeşil olduğundan, her özelliğin 5 değerden oluşan bir dizisi olacaktır. (ilk yeşil bölümün uzunluğu, ilk kırmızı bölümün uzunluğu, turkuaz bölümün uzunluğu, ikinci Kırmızı bölümün uzunluğu ve ikinci Yeşil bölümün uzunluğu).


3
Merhaba, bu soru Sinyal İşleme'ye taşınmak üzere . Odak noktamız görüntü işleme ve algoritmalardır ve sorunuzu bunun için sormak üzere düzenledim. MATLAB'da bilgili insanlar olabilir, ancak diğer dillerde (veya sözde kodda) size yanıt için rehberlik edecek çözümler alabilirsiniz. Çözümü MATLAB'da uygulama konusunda hâlâ sorun yaşıyorsanız (zaten bir MATLAB cevabı almadığınızı varsayarak), çeviri konusunda yardım istemek için istediğiniz zaman Stack Overflow'a geri dönebilirsiniz .
Lorem Ipsum

İlk adım, her sinyali bağımsız kanalında saklamak olmalıdır. Evet, CFP turkuazdır, ancak sinyalini yeşil kanaldan karıştırmanız gerekmez.
Jonas

Yanıtlar:


11

Mathematica'da örnek:

(* Get your image*)
img = Import["http://dl.dropbox.com/u/18072545/c_29.tif"];
(*Detect the extended minima and remove background*)
nB = ImageSubtract[img, ColorNegate@FillingTransform@ColorNegate[img]]  

resim açıklamasını buraya girin

(*Separate RGB channels*)
cS = ImageAdjust /@ ColorSeparate[img]

resim açıklamasını buraya girin

(*Binarize*)
bcS = Binarize[#, .4] & /@ cS  

resim açıklamasını buraya girin

(*Remove large elements*)
tH = TopHatTransform[#, DiskMatrix[2]] & /@ bcS  

resim açıklamasını buraya girin

(*Detect lines using a Hough Transform*)
lines = ImageLines[#, .01, .8] & /@ tH
(*Plot them*)
Show[img, Graphics[{
   Thickness[.01], Red, Line /@ (lines[[1]]),
   Thickness[.006], Green, Line /@ (lines[[2]]),
   Thickness[.004], Blue, Line /@ (lines[[3]])}]]
(*Red and green are superimposed*)  

resim açıklamasını buraya girin

Düzenle

Burada Kırmızı ve Yeşil kümelerini birbirinden ayırabilirsiniz. Tahmin edebileceğiniz gibi, bir bölümün ne zaman kırmızı olduğuna karar vermelisiniz !

resim açıklamasını buraya girin


Cevabınız için çok teşekkürler. Bu resimde sadece bir özellik olduğu için mavi çizginin neyi temsil ettiğini farz etmiyorum. Kırmızı / yeşili üst üste koyduğunuz hatta sadece kırmızı ve yeşil segmentlerin uzunluklarını elde etmek mümkün müdür?
Lee Sande

1
@ Elbette Elbette mümkün! Hough dönüşümü yaptıktan sonra, dilate çizgiyi maske olarak kullanın ve yakındaki kırmızı noktaları ölçün.
Dr. belisarius

@Lee Tek umursama "kırmızı" iyi bir tanım olması :)
Dr. belisarius

@Lee Mathematica'ya erişiminiz varsa, segmentleri ayırmak için biraz daha kod gönderebilirim
Dr. belisarius

Cevabınız için çok teşekkürler. Yanıtınızdan kırmızı kanalın sorunlu olduğunu ve bitişik yeşil segmentle çakışan sinyalin kesilmesi gerektiğini fark ettim. Sorunu güncelledim - lütfen bir göz atabilir ve bunun mantıklı olup olmadığını söyleyebilir misiniz?
Lee Sande
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.