2014-10-28 9 views
2

그래서 나는 jpg 형식의 횡단면 그림을 가지고 일하기를 원합니다. 더 나은 이해를 위해 난 그냥 희망처럼 실제 사진 모양을 좀 어떻게 충분히 상징하는 그림을 그렸다 : 사진의 상단에 enter image description hereR 이미지의 경계선 추출

는 물질 A는 바닥 재질 B.에서

목표 : 두 재료 사이에 경계선의 픽셀을 가져 오려고합니다. 지금까지

내 방법 :

  • 는 이미이 모든 픽셀의 색상 값 행렬을 초래할 것이라는 점을,
  • 나는 또한 알고 EBImage라는 패키지 사진을 읽는 방법을 알고있다.
  • jpeg를 흑백 사진으로 변환하는 것이 좋을 것이라고 생각했습니다.
  • 아래의 검정색 부분 (재료 B)을 채우고 소음을 줄이는 것이 좋을 것 같아서 재료 A가 재료 B를 만지는 행 번호를 찾기 위해 열 합계 (1의 합계)를 사용할 수 있습니다. 내가 찾은 경계선 (오른쪽?).

문제 :

  • 내가 진짜 사진에서, 지능적으로 검은 부분을 채우기 필터를 찾을 수없는이, 더욱 일을 복잡하게 많은 잡음이있을 것이다 ...
  • 나는이 모든에도 필요한 경우 확실하지 않다, 그리고

사전에 당신에게 모든 팁을위한 대단히 감사합니다 경계선을 찾는 내 목표에 도달 할 수있는보다 효율적인 방법이있다!

답변

0

귀하의 사진은 support vector machine의 후보자처럼 보입니다. svm 기능을 가진 R에 대한 패키지가 두 개 있으며, 하나는 e1071입니다.

+0

나는 위키 피 디아 엔트리와 그 소리를 정말 잘 읽었습니다. – Mmadsen

+0

방금 ​​이진 그림에서 svm 함수의 패키지 설명에서 편집되지 않은 코드를 실행하려고 시도했습니다. svm = svm (x, y = NULL, 크기 = TRUE, 유형 = NULL, 커널 = "방사형 (x), coef0 = 0, cost = 1, nu = 0.5, class.weights = NULL, cachesize = 40, tolerance = 0.001, 엡실론 = 0.1, 축소 = TRUE, 십자가 = 0, 확률 = 거짓, 적합 = 참, 부분 집합, na.action = na.omit) 놀랍게도 작동하지만 오브젝트 SVM은 "list of 30" 나는 경계선 인 벡터를 원한다.이 목록은 30이다. – Mmadsen

+0

ok : 검색된 픽셀의 일부를 suporting하는 벡터를 얻은 다음 "점을 연결하는"방법을 결정해야합니다. – Mmadsen

1

함께 사용할 예제가 없으면 대답이 모호합니다. 나는 보통 ImageJ를 이와 같은 작업에 사용하지만 EBImage는 내가 사용할 명령을 가지고있다.

EBImage에서 바이너리를 만들고 침식, 확장 및 구멍 채우기 (fillHull)를 수행합니다.

+0

아직 데이터가 없으므로 모호합니다. 나는 단지 준비 작업을하고있다. 나는 시도했다 : kern = makeBrush (10, shape = 'diamond') x = erode (x, kern) x = dilate (x, kern) display (x) 그리고 이미 내게 아주 좋은 결과를 주었다. 자기 그려진 그림. 나는 아직 fillHull을 사용하지 않았다. z = c (320-rowSums (x)) plot (z) 내가 원하는 것을 제공했습니다. 잘하면이 데이터는 실제 데이터로 예상대로 작동합니다. 대단히 도움을 주셔서 감사 드리며, 나는 그렉 스노우로부터 SVM 접근법을 시도해 얼마나 잘 작동하는지보실 것입니다 :) – Mmadsen

+0

"320"은 물론 ncol (x)을 의미합니다! =) – Mmadsen