본문 바로가기

librawprocessor

(3)
의료영상용 CLAHE 적용에 암부 보정하기. 방사선을 이용하는 의료영상에 기본적인 후보정 같은걸 안하면 대부분 알아보기 힘든 수준의 결과만 얻게 됩니다. 이런걸 인간이 시각적으로 차이를 구별하고, 더 나아가 의료진이 임상적인 판단을 돕기 위해서 LC(Local Contrast) 를 증가 시키는 방법을 사용하는데, 아마 이중 가장 오래되고 효과적이면서 많이 쓰이는 것이 Contrast Limited Adaptive Histogram Equalization (CLAHE) 알고리즘이 아닐까 합니다. 그런데 이 CLAHE 알고리즘을 그대로 사용하면 다음과 같은 문제가 생길 수 있습니다. 이 영상이 뭐가 문제인지는 바로 아래의 원본 영상을 대조 해 보면 차이를 알 수 있습니다. (빨간색 점선 안이 검게 타들어 가듯이 레벨이 전체적으로 변해 있는 것이 문제 ..
의료영상에 CLAHE 알고리즘 적용. 의료 영상의 품질을 높이기 위해 이전에 사용한 High Dynamic Tone Mapping 에 이어, 이번엔 CLAHE 라는 공식을 적용 해 보았습니다. CLAHE 는 Contrast Limited Adaptive Histogram Equalization 의 약자로서, grey image 에 (또는 RGB 의 Luminance로) 적용 할 수 있는 대조 이미지 처리 프로세서로서, 꽤 효과적인 결과물을 만들어 내는 듯 합니다. 일단 CLAHE 알고리즘은 이미 Wikipedia 등에 올라 와 있으며, 저는 이 고전적인 알고리즘을 그대로 사용해서 구현 해 보았습니다. 물론 컴파일러는 gcc 6.2 를 사용하였습니다. 일단 parameter 는 3072x3072 영상에, 100~16384 사이의 range 와..
openmp 병렬 처리를 이용한 librawprocessor 성능 향상의 예. 개발자가 뭔가를 설계 할때 어려움을 격는 부분이 항상 있는 부분이 있다고 한다면, 아마 for() 로 돌리는 구문을 어떻게 빠르게 할 것인가? 또는 이걸 thread 로 어떻게 만들 수 있을까? 일 겁니다. MinGW-W64 의 경우는 이 작업을 -fopenmp 명령과 함께 compile & link 하면 #pragma omp 를 사용할 수 있습니다. 다만, 3.0 까지는 지원이 안되기 때문에 좀 더 자세한 thread 분리는 어려운 부분이 있습니다. openmp 사용시엔 pthread 가 사용 되는건 추가로 인지 하고 있어야 합니다. 먼저 코드상에 직접 사용된 예를 보면 ... 위 영역 처럼 #pragma omp parallel for 만 지시해서 다음에 오는 for() 문 자체를 pthread 로 분..