Đo chiều dài sợi DNA từ hình ảnh của các phân tử đơn lẻ


14

Tôi là một nhà sinh vật học có rất ít kinh nghiệm về xử lý hình ảnh nhưng có đủ kiến ​​thức về MATLAB và có hộp công cụ xử lý hình ảnh. Lý tưởng nhất là tôi đang tìm kiếm một giải pháp dựa trên MATLAB, nhưng một cách tiếp cận phác thảo cách đi về nó cũng sẽ hữu ích.

Cập nhật (28 tháng 11 năm 2011) Dường như có một số vấn đề nhất định (chẳng hạn như sự trùng lặp về tín hiệu và định nghĩa màu sắc) khi sử dụng hình ảnh tổng hợp (đó là những gì tôi đã trình bày trong câu hỏi ban đầu). Tôi đang đính kèm các hình ảnh riêng biệt từ 2 kênh: xanh lá cây nhập mô tả hình ảnh ở đâyvà đỏ nhập mô tả hình ảnh ở đây(có thể bỏ qua các vùng màu ngọc lam trong hình ảnh tổng hợp) và hình ảnh đồng bộ nhập mô tả hình ảnh ở đây. Kênh màu đỏ là xấu vì 2 lý do: 1. Nó có độ tương phản kém do nền cao hơn, 2. Vì màu đỏ dường như chảy vào màu xanh lá cây ở mức nền.

Một tính năng được định nghĩa là một khu vực trên hình ảnh tổng hợp có Green-Red-turban-Red-Green hoặc tương đương với hai đoạn tuyến tính liền kề trên màu xanh lá cây và màu đỏ là màu sắc và dễ lây lan.

Tôi hy vọng rằng việc nhìn vào hình ảnh từ hai kênh riêng biệt giúp việc nhận dạng các tính năng dễ dàng hơn.

Tôi có các đề xuất sau đây cho thuật toán:

  1. Trước tiên, xác định các phân đoạn xanh đồng tuyến tính (và xác định độ dài của các phân đoạn xanh)

  2. Xác định xem có các phân đoạn truyền nhiễm và colinear liền kề hướng về phía nhau (tức là màu xanh lá cây-> đỏ-> <-red <-green) trong kênh màu đỏ. Nếu có, xác định độ dài đoạn màu đỏ từ điểm kết thúc đoạn màu xanh lá cây (vì chúng sẽ trùng với đoạn màu xanh lá cây) cho đến điểm trên đoạn màu đỏ gần nhất với đoạn màu đỏ khác của tính năng. (tức là một trong các đầu của đoạn màu đỏ được đặt ở cuối đoạn màu xanh chồng chéo).

Cảm ơn nhiều!

Bối cảnh :

Câu hỏi của tôi liên quan đến tính năng trích xuất từ ​​một hình ảnh:

nhập mô tả hình ảnh ở đây

Hình ảnh gốc (tif) nằm ở đây:

Hình ảnh ví dụ 1 (dropbox)

Hình ảnh này là tổng hợp của 3 kênh (ở định dạng tif): đỏ, xanh lá cây và xanh ngọc. Các sợi màu ngọc lam đơn giản đánh dấu tất cả các DNA chúng ta có trên lớp phủ. Đặc điểm đáng quan tâm là tính năng Xanh-Đỏ - xanh ngọc - Đỏ-Xanh lục trên chuỗi DNA đơn ở giữa hình ảnh.

Màu đỏ nói chung là ồn ào nhất. Ví dụ này là tốt vì độ tương phản là tốt. Tuy nhiên, đôi khi hình ảnh không đẹp và có màu sắc trong suốt hình ảnh, do đó, việc mã hóa cứng một giá trị RGB cụ thể cho màu xanh lục và đỏ có thể không hoạt động đối với tất cả các hình ảnh. Ngoài ra, lưu ý rằng các sợi không nhất thiết phải nằm ngang, chúng có thể được xoay (nhưng không bao giờ thẳng đứng).

Xin vui lòng xem hình ảnh này cho một ví dụ:

nhập mô tả hình ảnh ở đây Hình ảnh gốc (tif) nằm ở đây:

Hình ảnh ví dụ 2 (dropbox)

Ngoài ra, đôi khi một hình ảnh duy nhất có nhiều tính năng như vậy và đôi khi có nhiều tính năng trên cùng một chuỗi DNA. Cuối cùng, đôi khi có thể chỉ có một số tính năng (nghĩa là các phân đoạn màu xanh lá cây hoặc màu đỏ bị cô lập hoặc màu xanh lá cây bị cô lập, nhưng không ghép đôi).

Câu hỏi:

Tôi sẽ rất biết ơn nếu ai đó có thể giúp tôi có được độ dài của các phân đoạn màu xanh lá cây và màu đỏ riêng biệt, vì tính năng quan tâm là Xanh-Đỏ - xanh ngọc - Đỏ-Xanh lục, mỗi tính năng sẽ có một mảng gồm 5 giá trị (chiều dài của đoạn màu xanh lá cây thứ nhất, chiều dài của đoạn màu đỏ đầu tiên, chiều dài của đoạn màu ngọc lam, chiều dài của đoạn màu đỏ thứ hai và chiều dài của đoạn màu xanh lá cây thứ hai).


3
Xin chào, câu hỏi này sắp được chuyển sang Xử lý tín hiệu . Trọng tâm của chúng tôi là xử lý hình ảnh và thuật toán, và tôi đã chỉnh sửa câu hỏi của bạn để yêu cầu điều đó. Mặc dù có thể có những người am hiểu về MATLAB, nhưng bạn có thể nhận được các giải pháp bằng các ngôn ngữ khác (hoặc mã giả), hướng dẫn bạn trả lời. Nếu bạn vẫn bị mắc kẹt trong việc triển khai giải pháp trong MATLAB (giả sử bạn chưa nhận được câu trả lời MATLAB), bạn luôn có thể quay lại Stack Overflow để yêu cầu trợ giúp dịch.
Lorem Ipsum

Bước đầu tiên là lưu trữ từng tín hiệu trong kênh độc lập của nó. Có, CFP có màu xanh ngọc, nhưng bạn không cần phải trộn tín hiệu của nó từ kênh màu xanh lá cây.
Jonas

Câu trả lời:


11

Ví dụ trong Mathicala:

(* 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]]  

nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây

Biên tập

Ở đây bạn có thể thấy các cụm màu đỏ và màu xanh lá cây cách nhau. Như bạn có thể tưởng tượng, bạn phải quyết định khi một phần có màu đỏ!

nhập mô tả hình ảnh ở đây


Rất cám ơn câu trả lời của bạn. Tôi không rõ đường màu xanh được cho là đại diện vì chỉ có một tính năng trong hình ảnh này. Có thể lấy chiều dài của các đoạn màu đỏ và màu xanh lá cây trên đường mà bạn có màu đỏ / xanh lục chồng lên nhau không?.
Lee Sande

1
@Lee Tất nhiên là có thể! Khi bạn có biến đổi Hough, sử dụng đường giãn nở làm mặt nạ và đo các điểm đỏ gần đó.
Tiến sĩ belisarius

@Lee Suy nghĩ duy nhất cần quan tâm là có định nghĩa tốt về "màu đỏ" :)
Tiến sĩ belisarius

@Lee Nếu bạn có quyền truy cập vào Mathematica, tôi có thể đăng thêm một số mã để phân tách các phân đoạn
Tiến sĩ belisarius

Rất cám ơn phản hồi của bạn. Tôi nhận ra từ phản hồi của bạn rằng kênh màu đỏ có vấn đề và tín hiệu chồng lên đoạn màu xanh liền kề sẽ phải bị cắt bớt. Tôi đã cập nhật vấn đề - bạn có thể vui lòng xem và cho tôi biết nếu nó có ý nghĩa?
Lee Sande
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.