본문 바로가기

Developement/C/C++

(71)
의료영상용 CLAHE 적용에 암부 보정하기. 방사선을 이용하는 의료영상에 기본적인 후보정 같은걸 안하면 대부분 알아보기 힘든 수준의 결과만 얻게 됩니다. 이런걸 인간이 시각적으로 차이를 구별하고, 더 나아가 의료진이 임상적인 판단을 돕기 위해서 LC(Local Contrast) 를 증가 시키는 방법을 사용하는데, 아마 이중 가장 오래되고 효과적이면서 많이 쓰이는 것이 Contrast Limited Adaptive Histogram Equalization (CLAHE) 알고리즘이 아닐까 합니다. 그런데 이 CLAHE 알고리즘을 그대로 사용하면 다음과 같은 문제가 생길 수 있습니다. 이 영상이 뭐가 문제인지는 바로 아래의 원본 영상을 대조 해 보면 차이를 알 수 있습니다. (빨간색 점선 안이 검게 타들어 가듯이 레벨이 전체적으로 변해 있는 것이 문제 ..
FLTK MPG123 GUI Player 0.1.0.2 FLTK 1.3.4-1(-ts) 64bit 와, fl_imgtk + mpg123 64bit build DirectX 를 결합한 오디오 플레이어를 진행 중 입니다. 물론 mpg123 을 쓰기 때문에 mp3 까지만 재생 하기 때문에 fl_imgtk 로 GUI 효과를 주는 것에 대한 테크 데모 정도가 될 듯 합니다. 아래는 금일 까지 만든 데모의 실행 파일 입니다. 64bit Windows 에서만 구동 됩니다. 실제 mp3 를 test.mp3 란 이름으로 바꾸고 실행 파일과 함께 구동 하시면 album art 가 있을 경우 배경 이미지와, 이미지 전체를 자동으로 읽어 오게 됩니다. 음악 컨트롤은 따로 만들지 않았고, 설계가 Mac OS X 나, Linux 모두 구동 되도록 만들고 있기 때문에 내부에 audio..
DirectX Sound 전역 오디오 생성 방법. DirectX Sound 에서 기본적으로 버퍼를 생성 하는 부분에서 보통 다음과 같이 한다고 SDK 를 통해 알고 있었습니다만 이렇게 할 경우, 현재 CooperativeLevel 로 지정된 윈도우의 포커스를 잃을 경우 갑자기 소리가 안나옵니다 ! ZeroMemory( &dsdesc, sizeof( DSBUFFERDESC ) ); dsdesc.dwSize = sizeof( DSBUFFERDESC ); dsdesc.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLPOSITIONNOTIFY; dsdesc.dwBufferBytes = size; dsdesc.lpwfxFormat = &wavfmt; 그래서 구글신에게 찾아 보니, 버퍼 생성시 하나의 flag 하나인 DSBCAPS_GLOBAL..
Coming soon FLTK MPG123 GUI player. 이전부터 만들고 싶었던 아이폰 플레이어 답게 생긴 mp3 player 를 만들기 시작 했습니다. fl_imgtk 에서 만든 그래픽 처리 등등을 이용해서 앨범아트에 알파 마스크 씌어서 주변을 깍을수도 있고, 특정 크기로 모두 통일시킬수도 있고 하다 보니 제한된 영역 내에서 멋지게 표시되게 할 수 있는 처리 방법을 사용할 수 있게 되었습니다. 현재 mpg123 에 Direct X sound 를 붙여 보았는데, 나쁘진 않습니다만, DirectX 가 현재 할당된 윈도우의 포커스가 벗어 나게 되면 소리가 안나오는 관계로 결국 WASAPI 나 다른 방법을 써야 하게 되었습니다. 아니면 DXsound initialize 할때 다른 handle 을 넘겨 주면 되는건지 .. ??? 아무튼 GUI 는 그리 제 능력 안의 ..
FLTK 용 이미지 처리 라이브러리, fl_imgtk 업데이트. FLTK 용 이미지 처리 라이브러리인 fl_imgtk 의 새로운 업데이트를 GitHub 에 갱신 하였습니다. 별거 아닐 수 있긴 하지만, 뭔가 WPF 따위 안쓰고, QT 보다 매우 가볍고, 그렇다고 GTK+ 같은걸 도 안써도 되는 여러 조건에서 저에게 가장 적합한 것은 FLTK 뿐 이더군요. 하지만 너무 가볍게 만든 GUI 엔진이다 보니 그래픽 처리 부분은 거의 없다 싶이 하여, 만들게 된 것이 바로 fl_imgtk 입니다. M$VC 쓰는 분들이 FLTK 를 쓰는 경우가 거의 없다는 가정 하에, (사실 FLTK 를 쓰는 가장 큰 이유는 동일 소스로 Windows, Linux, Mac 에서 동일한 프로그램을 만들기 위한 목적) Windows 의 경우는 MinGW-W64 로 빌드 할 경우 가장 효과적인 성능..
FLTK 이미지 툴킷, fl_imgtk 공개 그간 다른용도로(?) 쓰기 위해 만들어 오던 FLTK 용 이미지 처리 엔진의 일부인 fl_imgtk 를 공개 하였습니다. 소스는 github 에서 받으실 수 있으며, 누구나 제한없이 사용 가능한 MIT License 를 적용하고 있습니다. (물론 원래 소스들에 대해서는 각자 따로 기재 해야 하는 제한이 있을 수 있습니다) https://github.com/rageworx/fl_imgtk 소스코드는 gcc 나 llvm-gcc, 아니면 MinGW-W64 만 make 로 빌드 할 수 있도록 지원 합니다만, 별도로 프로젝트 파일을 만들어서 M$VC 등에서도 사용은 가능하나, 아마 FLTK 를 M$VC 에서는 쓰지 않을것으로 보입니다. QT 를 M$VC 에서 개발하지 않는 것처럼요. fl_imgtk 가 현재 지원..
FLTK 1.3.4-1 을 위한 fl_imgtk 개발 중. FLTK 를 쓰면서 항상 불편 한 점은 여러 있을 수 있겠습니다만, 기본적으로 이미지 처리를 하는 기능이 너무 빈약 하다 보니, 이런 점들을 하나 둘씩 만들어 쓰다가 결국 이번에 하나로 뭉치기로 하였습니다. 아직까진 개발중인 부분이 많다 보니 어디에 올리진 않고 있습니다만, 곧 정리가 더 되는데로 GitHub 나 BitBucket 에 올리는 것을 목적으로 할 예정 입니다. 기본적으로 현재 여러 기능들이 지원 되며, 그 항목은 다음과 같습니다. Fl_RGB_Image 를 이용한 다양한 처리 ( Fl_JPEG_Image 나 Fl_PNG_Image 의 color depth 3 이상이면 사용 가능 ) 이미지 고속 회전 90도, 180도, 270도이미지 자유 회전 0~359 도 (alias 처리는 하지 않음)밝기..
Fl_GroupAniSwitch, version 01 FLTK 내에서 Fl_Group 간 페이지 전환 애니메이션을 구현한 소스를 공개 합니다. 같은 크기의 Fl_Group 만을 테스트 한 것이라 분명 다른 크기를 사용하면 버그가 발생 할 것으로 보이며, JUSTSHOW 에 대해서도 아직 테스트가 되지 않은 점을 고려해서 사용해 주시면 좋겠습니다. 소스는 아래에서 받아서 사용하실 수 있으며, FLTK license 와 MIT License 제한이 있습니다만, FLTK 사용했다와, 원래 저작자 소스 표시등을 어디에든 하면 상용이던 뭐던 제한없이 사용할 수 있습니다. 사용 방법은 다음과 같이 구현 하시면 되고, WaitForFinish() 는 내부에서 Fl::wait( 10 ) 을 호출 하므로, Thread 내에서 그리실 때엔 다른 구현이 필요 할 수 있음을 고..