답변:
이러한 종류의 처리를 위해 형태 적 조작 Expand 및 Shrink 가 작성되었습니다. "래스터"라이브러리가 너무 느리 므로 ArcGIS (또는 GRASS 또는 Mathematica )를 사용하십시오 R
.
종종 매개 변수를 약간 실험하는 데 도움이됩니다. 이미지를 청소하는 데 필요한 확장 및 축소 정도를 결정해야합니다. 각 작업은 예리한 세부 사항을 부드럽게 만드는 경향이 있기 때문에 일반적으로 가능한 한 적은 작업을 수행하려고합니다. 다음은 "엔티티"에서 대부분의 세부 사항을 유지하면서 명백한 "노이즈"를 상당 부분 제거하는 시퀀스입니다. "확장"과 "축소"를 참조하여 모두 흰색 그들이 바깥쪽으로 성장하는 원인을 확장하고 흰색 영역으로 잠식에 원인을 검은 색 세포를 축소 그래서, 세포.
"차이"열은 각 단계에서 시작 이미지와 끝 이미지의 차이를 강조하기 위해 색상을 사용합니다. 흰색은 검은 색, 파란색은 검은 색은 주황색입니다.
더 큰 나머지 조각을 제거해야하는 경우 RegionGroup 을 사용 하여 해당 조각 을 식별 하는 것이 가장 좋으며 , 그런 다음 다시 분류를 통해 제거 할 수 있습니다. 이것은 처음부터 옵션 이었지만와 약간의 초기 청소 Expand
하고 Shrink
작업을 줄이고 원하는 스무딩을 제공합니다.
덧붙여서, Mathematica 명령을 사용 하여이 그림에서 8 개의 이미지를 만들기로 결정했습니다 .
i = Import["http://i.stack.imgur.com/umDg7.png"];
l = Dilation[k = Erosion[j = Dilation[i, 2], 3], 1]; (* This does all the work *)
delta = ColorCombine /@ {{i, j}, {j, k}, {k, l}, {i, l}}; (* Compares images *)
ArcGIS의 워크 플로우는 동일하지만 구문이 더 길어집니다. 을 실제로 사용 R
하려면 "래스터"라이브러리를로드 focalFilter
하고 확장 및 축소를 수행하는 함수를 작성하십시오. 그런 다음 약 1 분 정도 기다렸다가 작업을 실행하십시오.
이것은 기본적으로 @ whuber의 대답에 대한 변형이며 Euclidian Distance를 사용하여 래스터 경계를 확장 및 축소하여 래스터의 날카로운 모서리를 부드럽게합니다. 유클리드 거리는 확장을 모방하지만 침입 / 수축에 음수 값을 도입 할 수는 없습니다. 비결은 Euclidian Distance 래스터의 부정을 취하고 성장시키는 반복적 인 프로세스를 개발하는 것입니다. 아래는 주어진 샘플 이미지의 단계와 설명을위한 스냅 샷입니다.
1 초만 유지하도록 래스터 재 분류
재 분류 된 래스터에 2 셀 거리 (이 경우 60 미터)에 대한 유클리드 거리 적용
Reclassify (값이있는 셀은 NODATA를 얻고 NODATA는 1로 바)) 또는 Raster Calculator의 Con 및 IsNull 연산자를 사용하여 확장 된 래스터 의 음수를 가져옵니다.
동일한 거리 (60m)로이 네거티브 래스터에 다시 유클리드 거리를 적용합니다
위에서 주어진 동일한 프로세스를 수행하여 부정적인 점을 취하십시오.
이 래스터에서 래스터 계산기 또는 재 분류를 사용하여 NODATA 셀을 0에 할당하여 샘플 래스터의 원래 값으로 되돌립니다.
수축 대 유클리드 거리 확장
참고 : 녹색은 처리 된 셀을 나타냅니다 (문제의 흰색 셀)
유클리드 거리의 장점은 날카로운 모서리를 부드럽게하는 빗변 범위를 통해 각 셀에서 적절한 거리를 차지한다는 것 입니다. 반면에 확장 및 축소 도구의 셀 매개 변수 수는 모든 방향에 대해 동일한 수의 셀을 처리하여 가장자리와 같은 경계 상자를 생성하므로 가장자리 / 코너를 지나치게 일반화합니다.
그러나 주요 문제는 확장 / 축소만큼 노이즈를 성공적으로 제거하지 못하며 응답보다 약간 더 깁니다.