이미지 내에서 사전 정의 된 영역 추출친애하는 여러분,
미리 정의 된 내 이미지의 원 안에 픽셀을 스크립트로 추출 할 수 있는지 알고 싶습니다 (첨부 참조).
도움을 위해 미리 감사드립니다.
Krs,
사미르
다시 : 이미지 내에서 미리 정의 된 영역 추출아마도. 이미지에있는 픽셀 값에 대한 통계를 사용하여 모델을 만들면 필터에 필요한 두 개의 임계 값을 만들 수 있습니다. 캐니 필터 안에 있지 않은 캐니 필터 앞에 그림을 매끄럽게 만들어서 매끄러운 픽셀로 모델을 만들 수 있습니다. (편집 : 내부 canny 필터 블러가 더 나은 이유는 부동 소수점 데이터를 추적하기 때문입니다. 외부 흐림 효과는 부동 소수점 데이터를 흐린 이미지의 정수 픽셀 값 0..255로 줄이고 어두운 이미지의 대부분의 픽셀은 0..10 정도입니다.
https://en.wikipedia.org/wiki/Canny_edge_detector canny 필터가 작동하는 방법을 설명합니다. 큰 임계 값 (사진의 경우 매우 작음)은 라인이 시작되는 곳입니다. 인접한 두 픽셀은 그만큼 많이 달라야합니다. 선은 작은 문턱 값 이하로 떨어질 때까지 "추적"됩니다 (사진의 경우 매우 작음). "두 개의 임계 값은 경험적으로 결정되며 그 정의는 주어진 입력 이미지의 내용에 따라 달라집니다."- Wikipedia
이 이미지에서 색상이 중요한가요? 그렇지 않은 경우 이미지를 회색조로 축소 할 수 있습니다. 나는 더 간단한 문제가 될 것이라고 생각한다. 그레이 스케일 값의 분포를 만들 수 있습니다 ...
이미지로 얻은 후 라인으로 무엇을 할 것입니까? 단지 시각화일까요, 아니면 그 이미지에 대해 더 많은 계산을 할 것입니까? 질량 중심과 반지름 중심이 필요하다면 클러스터링 접근법이 여전히 잘 작동 할 수 있습니다.
다시 : 이미지 내에서 미리 정의 된 영역 추출친애하는 크레이지,
우리는 자동화 된 방법으로 솔루션을 배치했지만 사진이 이기종이기 때문에 수동으로 임계 값 매개 변수를 조정해야합니다. 이 단계를 자동화하는 것이 가능하다고 생각하십니까?
고마워,
사미르
다시 : 이미지 내에서 미리 정의 된 영역 추출친애하는 크레이지,
canny 필터가 정말 도움이됩니다.
나는 그 과정을 자동화하려고 노력할 것이다.
클러스터링 또한 매우 흥미 롭지 만 다른 사진에서는 그 결과가 명확하지 않습니다.
도와 주셔서 정말로 고맙습니다,
사미르
다시 : 이미지 내에서 미리 정의 된 영역 추출스크립팅 인덱스에서 canny 필터 예제를 살펴보십시오. 매개 변수는 슬라이더에 있으며 데이터의 강도가 다르면 너무 민감 할 수 있지만 예를 들어
스크립팅 인덱스 예제의 슬라이더 설정
이것을 얻으려면
캐니 필터가 가장자리를 감지합니다.
상위 2 개의 슬라이더로 이미지의 노이즈가 부드럽게 들렸습니다. 하단의 두 슬라이더는이 픽셀 강도에 적합한 값으로 조정되었습니다. 스크립트는 예제에 있습니다. 사진이 충분히 유사한 경우 프로세스를 자동화 할 수 있습니다. 출력은 흑백 및 1과 0 이미지입니다. 추가 처리를 위해 매트릭스의 픽셀을 움켜 잡을 수 있습니다.
픽셀 색상에 대한 분석을 원할 수도 있습니다. 클러스터링하면 어두운 파란색과 더 어두운 파란색 쌍의 클러스터. 어쩌면 진한 파란색의 클러스터 된 픽셀의 xy 좌표를 사용할 수 있습니다. 예 :
// load the test image
img = open("$desktop/large.png","png");
// grab the rgb data from the image
{r,g,b} = img<<GETPIXELS></GETPIXELS>
클러스터링 결과가 이미지로 바뀜
클러스터 된 픽셀의 XY 좌표로 작업하면 원하는 매개 변수를 찾을 수 있습니다.
다시 : 이미지 내에서 미리 정의 된 영역 추출친애하는 크레이지,
제안 해 주셔서 감사합니다.
안타깝게도 이미지 내부의 원의 현지화는 사진에서 다른 것으로 이동 될 수 있습니다 (아직 표준화되지 않았습니다).
내 질문은 가능한 경우 자동으로 원의 윤곽을 감지합니다.
Krs,
사미르
다시 : 이미지 내에서 미리 정의 된 영역 추출예. 다음과 같이 전체 이미지에 대한 픽셀 값의 행렬을 가져옵니다.
image << getpixels (스크립팅 인덱스를 확인하십시오, 나는 지금 내 책상에서 떨어져 있습니다).
픽셀을 별도의 r, g, b 채널 또는 결합 된 JMP 색상으로 가져올 수 있습니다.
다음으로, 동일한 치수의 마스크 매트릭스가 필요합니다. 픽셀 매트릭스는 유지해야하며, 픽셀은 거부됩니다. 하나는 흰색, 0은 검정색 페인트 프로그램을 사용할 수 있습니다. 이미지를로드하고 하나의 채널, 빨간색 (아마도 흑백 이미지에 대해 r, g, b가 모두 동일해야 함)을 얻습니다.이 값은 0과 1 값을가집니다.
이제 원하는 결과를 결정하십시오. 흥미로운 픽셀 만 순서가 정해지지 않은 목록입니까? 또는 무의미한 값을 0으로 설정 한 이전과 같은 크기의 행렬입니까?
imageMatrix [Loc (mask)]는 마스크에 0이 아닌 값이있는 정렬되지 않은 픽셀을 제공합니다.
imageMatrix : * 마스크는 마스크가 0 인 곳에서 0을, 마스크가 1 인 원래 값을 제공합니다. (: *는 요소 단위의 곱셈입니다. *는 행렬 - 대수 곱셈입니다 ... 원하는 것은 아닙니다.)
이 우편 도움이 될 수 있습니다.