단일 분자 이미지에서 DNA 섬유 길이 측정


14

저는 이미지 처리 경험이 거의없는 생물 학자이지만 MATLAB에 대한 충분한 지식이 있고 이미지 처리 도구 상자가 있습니다. 이상적으로는 MATLAB 기반 솔루션을 찾고 있지만 해결 방법을 설명하는 접근 방식도 도움이 될 것입니다.

업데이트 (2011 년 11 월 28 일) 합성 이미지를 사용할 때 (초기 질문에서 제시 한) 특정 문제 (신호의 중복 및 색상 정의 등 ) 가있는 것으로 보입니다. 녹색 여기에 이미지 설명을 입력하십시오과 빨간색 여기에 이미지 설명을 입력하십시오(복합 이미지의 청록색 영역은 무시할 수 있음)과 coposite image 의 두 채널에서 별도의 이미지를 첨부 하고 있습니다 여기에 이미지 설명을 입력하십시오. 적색 채널은 다음 두 가지 이유로 나쁩니다. 1. 배경이 높기 때문에 대비가 좋지 않습니다. 2. 적색이 배경 레벨에서 녹색으로 번지는 것처럼 보입니다.

기능 등가 녹색 - 빨간색 - 청록색 빨강, 녹색 또는 녹색에서 2 개 개의 인접하는 선형 세그먼트와 동일 선상 및 전염성 적색을 갖는 합성 화상의 영역으로 정의된다.

두 개의 별도 채널에서 이미지를 보면 기능을 쉽게 식별 할 수 있기를 바랍니다.

알고리즘에 대한 다음 제안이 있습니다.

  1. 먼저 동일 선형 녹색 세그먼트를 식별하고 녹색 세그먼트의 길이를 결정합니다.

  2. 적색 채널에서 인접한 전염성 및 동일 선상 세그먼트가 서로를 향하고 있는지 (즉, 녹색-> 빨강-> <-빨간 <-녹색) 확인합니다. 예인 경우 녹색 세그먼트가 끝나는 지점 (녹색 세그먼트와 겹치므로)에서 피처의 다른 빨간색 세그먼트에 가장 가까운 빨간색 세그먼트의 지점까지 빨간색 세그먼트 길이를 정의하십시오. (즉, 빨간색 세그먼트의 끝 중 하나가 겹치는 녹색 세그먼트의 끝으로 설정 됨).

많은 감사합니다!

배경 :

내 질문은 이미지에서 기능을 추출하는 것과 관련이 있습니다.

여기에 이미지 설명을 입력하십시오

원본 이미지 (tif)는 다음 위치에 있습니다.

이미지 예 1 (드롭 박스)

이 이미지는 빨강, 초록, 청록색의 3 가지 채널 (tif 형식)로 구성되어 있습니다. 청록색 색의 섬유는 단순히 coverslip에있는 모든 DNA를 표시합니다. 관심있는 기능은 이미지의 중간에있는 단일 DNA 가닥의 녹색-빨강-청록색-빨강-녹색 기능입니다.

빨강이 일반적으로 가장 시끄 럽습니다. 대비가 좋기 때문에이 예가 좋습니다. 그러나 때로는 이미지가 좋지 않고 이미지 전체에 색조가 있으므로 녹색 및 빨강 색상의 특정 RGB 값을 하드 코딩하면 모든 이미지에서 작동하지 않을 수 있습니다. 또한 섬유가 반드시 수 평일 필요는 없으며 회전 할 수 있지만 수직이 될 수는 없습니다.

예를 보려면이 이미지를 참조하십시오.

여기에 이미지 설명을 입력하십시오 원본 이미지 (tif)는 다음 위치에 있습니다.

이미지 예 2 (드롭 박스)

또한 단일 이미지에 이러한 기능이 많고 동일한 DNA 가닥에 여러 기능이있는 경우도 있습니다. 마지막으로 부분 기능 만있을 수 있습니다 (예 : 고립 된 녹색 또는 고립 된 빨강 또는 고립 된 녹색-빨간색 세그먼트이지만 짝을 이루지 않음).

질문:

녹색과 빨간색 세그먼트의 개별 세그먼트의 길이를 얻는 데 도움을 줄 수 있다면 감사하겠습니다. 즉, 관심있는 기능이 녹색-빨간색-청록색-빨강-녹색이므로 각 기능의 값은 5 개입니다. (제 1 녹색 세그먼트의 길이, 제 1 적색 세그먼트의 길이, 청록색 세그먼트의 길이, 제 2 적색 세그먼트의 길이 및 제 2 녹색 세그먼트의 길이).


3
안녕하세요,이 질문은 Signal Processing 으로 이전 될 예정 입니다. 우리는 이미지 처리 및 알고리즘에 중점을두고 있으며, 귀하의 질문을 편집하여 요청했습니다. MATLAB에는 지식이있는 사람들이있을 수 있지만 다른 언어 (또는 의사 코드)로 솔루션을 얻을 수 있습니다. MATLAB에서 솔루션을 구현하는 데 여전히 어려움을 겪고 있다면 (MATLAB 답변을 아직받지 못했다고 가정 할 때) 항상 스택 오버플 로로 돌아와서 번역에 대한 도움을 요청할 수 있습니다.
Lorem Ipsum

첫 번째 단계는 각 신호를 독립 채널에 저장하는 것입니다. 예, CFP는 청록색이지만 녹색 채널에서 신호를 믹싱 할 필요는 없습니다.
조나스

답변:


11

Mathematica의 예 :

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

여기에 이미지 설명을 입력하십시오

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

여기에 이미지 설명을 입력하십시오

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

여기에 이미지 설명을 입력하십시오

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

여기에 이미지 설명을 입력하십시오

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

여기에 이미지 설명을 입력하십시오

편집하다

여기 빨간색과 녹색 클러스터가 분리되어있는 것을 볼 수 있습니다. 당신이 상상할 수 있듯이, 당신은 결정해야 할 때 일부가 빨간색입니다!

여기에 이미지 설명을 입력하십시오


답변 주셔서 감사합니다. 이 이미지에는 단 하나의 기능 만 있기 때문에 파란색 선이 무엇을 나타내는 지 명확하지 않습니다. 빨강 / 녹색이 겹쳐진 선에서 빨강 및 녹색 세그먼트의 길이를 얻을 수 있습니까?
Lee Sande

1
@Lee 물론 가능합니다! Hough 변환이 완료되면 확장 된 선을 마스크로 사용하고 근처의 빨간색 점을 측정하십시오.
닥터 벨리 사리우스

@Lee주의해야 할 유일한 생각은 "빨간색"을 잘 정의하는 것입니다. :)
Dr. belisarius

@Lee Mathematica에 액세스 할 수 있다면 세그먼트를 분리하는 코드를 추가 할 수 있습니다
Dr. belisarius

답변 해 주셔서 감사합니다. 귀하의 응답으로 빨간색 채널에 문제가 있으며 인접한 녹색 세그먼트와 겹치는 신호가 잘 려야한다는 것을 깨달았습니다. 문제를 업데이트했습니다. 이해가 되시겠습니까?
Lee Sande
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.