Closed jhpark-rs closed 3 years ago
segmentation volume source 의 bit-mask 를 이용하기 때문이 아닐까 합니다.
source mask 의 해당 bit 가 채워져있는 경우 함께 extract 되기 때문에, 입력값으로 1 << lesionNumber
와 같이 사용하신다면 겹쳐(중복) 생성되는 것은 피할 수 있지 않을 까 싶습니다.(테스트 코드에서도 그와같이 사용했었습니다.) 이 문제가 아니라면, 숭실대와 함께 이야기 해보아야 할 것 같습니다.
unsigned char ucByteValue = 1<<5;
// ...
// test mask volume 생성
for(int row=0; row<iHeight; row++)
{
for(int col=0; col<iWidth; col++)
{
int iSIdx = row*imgData->widthStep + col;
int iDIdx = row*iWidth + col;
unsigned char* pucSVal = (unsigned char*)(imgData->imageData + iSIdx);
if(pucSVal[0] != 0)
ppucVolData[idx][iDIdx] |= ucByteValue;
}
}
// ...
// mesh 얻기
pCIMeshGen->GetMesh(CiMesh, bInterpolationFlag, bSmoothingFlag, bDecimationFlag, bMeterScaleFlag, ucByteValue, &errNo);
segmentation volume source 의 bit-mask 를 이용하기 때문이 아닐까 합니다.
저도 그렇게 예상합니다. 다시 예전 처럼 bit mask 형태로 변환하려면 실행 시간도 추가되고, 불필요한 메모리 사용도 생기니 이 건은 개발 편의상 숭실대 쪽에 수정 요청해주시면 좋겠습니다.
v1989에서 201211_MeshGen_API 적용하여 문제 해결하였습니다.
Lesion 1부터 7까지 3D 뷰어로 확인 결과 정상 분리되어 있습니다. 수정 확인하였습니다.
종전 bit mask 방식으로 lesion 가장자리의 색번짐 현상을 해결하기 어려워 byte value를 사용하는 방식으로 수정하였습니다. 수정 후 GetMesh(...) 함수의 6번째 인자 inTargetByteValue 가 작은 값을 갖는 값을 경우, 그보다 큰 값을 갖는 lesion 영역까지 모두 포함한 mesh를 생성하는 것을 확인하였습니다.