대학 생활 ( University life )/학부 연구생

[학부연구생/ 3학년] CHM을 구할때 빈 선이 그어지는 원인 해결. (pcl라이브러리 사용)

우당탕탕 개발 일지 2025. 7. 30. 20:02
728x90

누가 이 글을 볼까 싶지만... CHM을 구할 때 시행착오를 줄일 수 있길 바라면서 글을 써봅니다. 

문제 상황: 처음에 CHM을 구할때 까지만 해도 선이 그어지는 게 눈에 확연히 보이지 않습니다. (3D라 방향에 따라서 보이다 안 보이다 합니다.) 그 후에 watershed를 하면 선이 확연하게 보여서 문제를 인식하게 되었습니다. 

 

빈 선

 

가설 1 ) DSM이 비어 있어서 DSM-DEM에서 엉터리 값이 들어가나? 

: 이미 코드가 point.x-min.x  / point,y -min.y / point.z -min.z 해준 상태였기 때문에 문제없었습니다.

그리고 dsm빈 곳에 임의의 값을 넣었지만 여전히 빈 선이 그어졌습니다. 

 

가설 2) chm이후 4m 이하는 0으로 필터링해주는 코드 때문인가? 

: 정말 만약에 빈 선이 그어지는 곳에 4m 이하의 점들만 있어서 서로 빼주며 아예 사라져 버린 건가 생각을 했습니다. 

코드를 고쳐 돌려봤지만 문제는 여전했습니다. 

 

 

가설 3) 격자의 크기가 안 맞아서 DEM과 DSM이 서로 빼주는 위치가 다른가? ☑️ 정답 

 

DEM과 DSM가 함수로 구현되어 있고 각각 원본의 점을 격자로 만드는 코드가 있었습니다. 

 

DEM_func(격자 -> 지면점 추출)
DSM_func(격자-> 상단에 연속된 점들 추출)

 

이렇게 되다 보니 CHM에서 빼주는 격자의 개수도 다르고 격자의  위치도 달라 문제가 발생한 것이었습니다. 

 

해결 방안: main에서 격자를 나눠 격자의 개수, 격자 시작 위치, 끝위치를 함수의 파라미터로 넘겨주는 것이었습니다. 

 

해결 ^^