본문 바로가기

Developement

(142)
Fl_GroupAniSwitch, version 01 FLTK 내에서 Fl_Group 간 페이지 전환 애니메이션을 구현한 소스를 공개 합니다. 같은 크기의 Fl_Group 만을 테스트 한 것이라 분명 다른 크기를 사용하면 버그가 발생 할 것으로 보이며, JUSTSHOW 에 대해서도 아직 테스트가 되지 않은 점을 고려해서 사용해 주시면 좋겠습니다. 소스는 아래에서 받아서 사용하실 수 있으며, FLTK license 와 MIT License 제한이 있습니다만, FLTK 사용했다와, 원래 저작자 소스 표시등을 어디에든 하면 상용이던 뭐던 제한없이 사용할 수 있습니다. 사용 방법은 다음과 같이 구현 하시면 되고, WaitForFinish() 는 내부에서 Fl::wait( 10 ) 을 호출 하므로, Thread 내에서 그리실 때엔 다른 구현이 필요 할 수 있음을 고..
FLTK Fl_Group 을 blur 된 배경 이미지로 만들기. FLTK 1.3.4-1 부터 좀 더 강력 해 진 영역이 있다면, 바로 Offscreen surface 에 특정 FLTK widget 을 그려 이것을 Fl_RGB_Image 로 만들 수 있다는 것 입니다. 그래서 아래 처럼 빨간 점선 안의 특정 영역 (Fl_Group* grpViewer 영역) 을 Fl_RGB_Image 로 만들고, 이를 fl_smimg 를 이용하여 burred 된 이미지로 간단히 만들 수 있습니다. ▼ 이 방법은 다음과 같은 원리로 진행 됩니다. (필요 사항, fl_smimg) bool Fl_GroupAniSwitch::generate_blurred_img( Fl_Group* src, Fl_RGB_Image* &dst ) { if ( src != NULL ) { Fl_Image_Surfa..
FLTK 에 부족한 페이지 전환 애니메이션 추가중 .. FLTK 에 없다 싶이 한 기능 중 하나가, 바로 애니메이션 처리 입니다. 요즘 GUI 대세를 보면 뭔가 간단한 애니메이션이라도 집어 넣어 만드는게 예의가 아닌가 하는 바람으로 가칭 Fl_GroupAniSwitch() 라는걸 만들어 보고 있습니다. FLTK 특성상, 배경이 안그려 지는 것들을 감안해서 Fl_Group 중, 가려지는 것에 대해 offscreen 으로 이미지를 그린 다음, 이것을 Bilinear 로 10%로 줄였다가 다시 원래 크기로 Bicubic Filter를 적용해서 그리면 보통 우리가 아는 Blurred background 가 됩니다. 현재 제가 만들어 쓰는 fl_smimg 가 OpenMP 를 적용해서 돌기 때문에 1080p 정도의 이미지는 얼마 걸리지 않는 시간 내에 처리가 가능한 관..
Look up table 생성이 이상하다 ... 오래된 영상 처리 관련 부분을 새로 만들고 있는 중 입니다만, 아주 기가막힌 것들을 많이 보게 되었습니다. 물론 새로 만드는 것엔 이런 부분들이 존재할 공간 따위는 없겠습니다만 ... 영상처리 가장 기본중 하나인 Look up table (LUT) 생성을 하는 알고리즘을 기존걸 새로 만드는 중 입니다만, 대체 무슨 생각으로 만들었었을까? 란 의문이 많이 들고, 사실 이걸 왜 쓰는지도 모를 것들이 있어 난관인 부분이 큽니다. 아래의 그래프는 기존의 알고리즘을 그대로 구현 해 보면서 다시 만들어 본 것으로 ... 그나마 다 정상으로 돌아 가는 듯 한데 .. 문득 Sigmoid 곡선을 이용한 LUT 생성이라는 걸 만들어 놨길래 이상한 수식을 쓰고 있어 검증을 해 보니 아래 이미지 처럼 알수 없는 걸 그리고 있..
의료영상에 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 와..
[FLTK] HICON 에서 Fl_RGB_Image 로 변환. 이 소스 코드는 rk HDRi Studio 을 만들면서 필요에 의해서 만들어진 것 입니다만, FLTK 에서 자체적으로 윈도우를 만들어 쓸 때, 아이콘을 그리고 싶은데 막상 HICON 을 이미지 원본으로는 쓸 수 없을때 Alpha 를 가진 32bit RGB 이미지로 만들어 쓰기에 좋다고 하겠습니다. 먼저 icon_to_flrgb() 함수는 다음과 같습니다. Fl_RGB_Image* icon_to_flrgb(HICON hIcon) { BITMAP bm; ICONINFO iconInfo; GetIconInfo(hIcon, &iconInfo); GetObject(iconInfo.hbmColor, sizeof(BITMAP),&bm); int width = bm.bmWidth; int height = bm.bmHe..
FLTK MDI form 구현... HDR imaging 을 시작 한 바, 이젠 color 쪽에서도 처리 할 수 있도록 만들고자 나름 있어 보이는 이름의 RK HDRi Studio 란걸 Open Source 로 만들기 시작 했습니다. 물론 아직 commit 은 커녕, repository 도 만들지 않았습니다만. 제목은 MFC 에나 있는 MDI form 을 FLTK 에서 구현 해 보고 있습니다만, 문득 드는 생각이 ... 이 짓거릴 왜 구현하고 있는거지? 란 생각이 듭니다. 그래도 만든거고 하니 어쨋든 관련 소스는 공개 할 생각 이긴 합니다만, 대체 이걸 구현해서 이 구태적인 GUI 형태를 왜 써야 하는걸까? 란 의문도 들고, 복잡 하네요. 구현도 그리 좋지 못하고. FLTK 를 쓰고 있지만, 윈도우 자체는 자체에서 그리는 형태가 되서 th..
gcc/MinGW 6.x 부터 생긴 경고, misleading indentation gcc 5 버젼 부터 개발을 해 오던 librawprocessor 에서 눈치를 못 채고 있던 컴파일 경고가 뜨기 시작 한걸 이번에 알았습니다. 아직 major release 가 이루어 지지 않았기 때문에 신경을 덜 쓴 것도 있긴 합니다만, 갑자기 이 오류가 눈에 띈 것은 누군가의 계시인건지 ... 이 오류는 gcc 6 버젼 부터 강화된 여러 조건별 비교문에 따른 것으로 아래처럼 코드가 되어 있는 경우 발생 합니다. 이 오류는 GNU gcc 6 가이드 웹 페이지를 보면 나오는데,https://gcc.gnu.org/gcc-6/porting_to.html 아래 처럼 복합적인 비교문으로 포인터와 숫자로 넘어오는 값을 함께 비교 할 때에는 브레이스 {} 로 묶어 주어야 합니다. 그래서 아래처럼 코드를 변경 하면 ..