"Developement" 검색결과 (142)
  • 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 처리는 하지 않음)밝기..

    Developement/C/C++
    2017.03.24 19:00
  • Fl_GroupAniSwitch, version 01

    FLTK 내에서 Fl_Group 간 페이지 전환 애니메이션을 구현한 소스를 공개 합니다. 같은 크기의 Fl_Group 만을 테스트 한 것이라 분명 다른 크기를 사용하면 버그가 발생 할 것으로 보이며, JUSTSHOW 에 대해서도 아직 테스트가 되지 않은 점을 고려해서 사용해 주시면 좋겠습니다. 소스는 아래에서 받아서 사용하실 수 있으며, FLTK license 와 MIT License 제한이 있습니다만, FLTK 사용했다와, 원래 저작자 소스 표시등을 어디에든 하면 상용이던 뭐던 제한없이 사용할 수 있습니다. 사용 방법은 다음과 같이 구현 하시면 되고, WaitForFinish() 는 내부에서 Fl::wait( 10 ) 을 호출 하므로, Thread 내에서 그리실 때엔 다른 구현이 필요 할 수 있음을 고..

    Developement/C/C++
    2017.03.23 18:07
  • 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..

    Developement/C/C++
    2017.03.23 17:15
  • FLTK 에 부족한 페이지 전환 애니메이션 추가중 ..

    FLTK 에 없다 싶이 한 기능 중 하나가, 바로 애니메이션 처리 입니다. 요즘 GUI 대세를 보면 뭔가 간단한 애니메이션이라도 집어 넣어 만드는게 예의가 아닌가 하는 바람으로 가칭 Fl_GroupAniSwitch() 라는걸 만들어 보고 있습니다. FLTK 특성상, 배경이 안그려 지는 것들을 감안해서 Fl_Group 중, 가려지는 것에 대해 offscreen 으로 이미지를 그린 다음, 이것을 Bilinear 로 10%로 줄였다가 다시 원래 크기로 Bicubic Filter를 적용해서 그리면 보통 우리가 아는 Blurred background 가 됩니다. 현재 제가 만들어 쓰는 fl_smimg 가 OpenMP 를 적용해서 돌기 때문에 1080p 정도의 이미지는 얼마 걸리지 않는 시간 내에 처리가 가능한 관..

    Developement/C/C++
    2017.03.23 16:53
  • Look up table 생성이 이상하다 ...

    오래된 영상 처리 관련 부분을 새로 만들고 있는 중 입니다만, 아주 기가막힌 것들을 많이 보게 되었습니다. 물론 새로 만드는 것엔 이런 부분들이 존재할 공간 따위는 없겠습니다만 ... 영상처리 가장 기본중 하나인 Look up table (LUT) 생성을 하는 알고리즘을 기존걸 새로 만드는 중 입니다만, 대체 무슨 생각으로 만들었었을까? 란 의문이 많이 들고, 사실 이걸 왜 쓰는지도 모를 것들이 있어 난관인 부분이 큽니다. 아래의 그래프는 기존의 알고리즘을 그대로 구현 해 보면서 다시 만들어 본 것으로 ... 그나마 다 정상으로 돌아 가는 듯 한데 .. 문득 Sigmoid 곡선을 이용한 LUT 생성이라는 걸 만들어 놨길래 이상한 수식을 쓰고 있어 검증을 해 보니 아래 이미지 처럼 알수 없는 걸 그리고 있..

    Developement/C/C++
    2017.03.17 15:21
  • 의료영상에 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 와..

    Developement/C/C++
    2017.03.03 18:40
  • [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..

    Developement/C/C++
    2017.02.20 10:38
  • FLTK MDI form 구현...

    HDR imaging 을 시작 한 바, 이젠 color 쪽에서도 처리 할 수 있도록 만들고자 나름 있어 보이는 이름의 RK HDRi Studio 란걸 Open Source 로 만들기 시작 했습니다. 물론 아직 commit 은 커녕, repository 도 만들지 않았습니다만. 제목은 MFC 에나 있는 MDI form 을 FLTK 에서 구현 해 보고 있습니다만, 문득 드는 생각이 ... 이 짓거릴 왜 구현하고 있는거지? 란 생각이 듭니다. 그래도 만든거고 하니 어쨋든 관련 소스는 공개 할 생각 이긴 합니다만, 대체 이걸 구현해서 이 구태적인 GUI 형태를 왜 써야 하는걸까? 란 의문도 들고, 복잡 하네요. 구현도 그리 좋지 못하고. FLTK 를 쓰고 있지만, 윈도우 자체는 자체에서 그리는 형태가 되서 th..

    Developement/C/C++
    2017.02.02 16:28
  • 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 아래 처럼 복합적인 비교문으로 포인터와 숫자로 넘어오는 값을 함께 비교 할 때에는 브레이스 {} 로 묶어 주어야 합니다. 그래서 아래처럼 코드를 변경 하면 ..

    Developement/C/C++
    2017.01.23 14:59
  • 여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 마지막 날.

    몇가지 잘못 구현된 부분을 수정 하고, 간략화 하여 어느정도 복잡도를 가지는 영역 내를 채우는 것을 성공리에 완성 하였습니다. 아직 테스트를 해 보면 매우 복잡한 영역은 여전히 node 에서 잘못 처리되는 경우가 발견 되긴 합니다만, 이 부분은 다음 구현으로 넘기고 이번엔 완료된 것을 통해서 약간의 알고리즘 설명을 남겨 보도록 하겠습니다. 먼저 참고한 알고리즘은 Darel Rex Finley 라는 사람의 페이지를 통해서 입니다. Polygon fill algorithm 알고리즘은 알고나면 꽤 간단 합니다. 먼저, 삼각형을 하나 그린다 치면, 아래 처럼 좌표계가 만들어 지고, 이 좌표계는 vector < x, y > 에 차곡 차곡 쌓이게 됩니다. 여기서 vector < x, y > 는 0번째와 마지막 이 ..

    Developement/C/C++
    2016.12.21 18:13
  • 여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 둘째날.

    이전에 polygon 내 fill 을 하기 위한 알고리즘을 파다, 여러 개선점을 찾기 위한 노력을 통해 답을 찾기 시작 하고 있습니다만, 현재 fill 을 실패 하는 이유를 찾기 위해 돌려 보고 있다 보니, 아래처럼 node 가 짝이 안맞는 경우가 생기는 것을 알았습니다. 최적화된 알고리즘 검출을 위해 re-order 등을 수행하는데도, 검출에 실패 하는 영역이 나오는 것을 보면, 이것은 다른 알고리즘을 찾아야 할 것으로 보입니다. 현재까지 돌려 본 것을 압축해서 올려 봅니다.코드 및 CBP, 디버깅용 바이너리 파일 압축본 다운로드 필요사항: Code::Blocks, MinGW-W64, FLTK-1.3.4 (또는 FLTK-1.3.4-TS).

    Developement/C/C++
    2016.12.20 18:01
  • 여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 첫쨋날.

    librawprocessor 에 새로 끼워 넣고 싶은 기능 중 하나가, 바로 포토샵 같은데서 자주 쓰는 그물망 기능인가 하는 겁니다, 여러 포인트를 찍어 그 영역 안을 구하는 것. 그래서 그걸 FLTK 로 간단히 만들고, 내부 알고리즘은 다음 URL 을 통해 한번 구현을 해 보기로 했습니다.http://alienryderflex.com/polygon_fill/ 해당 싸이트엔 C 로 간단히 되어 있는걸 C++ 로 좀 더 복잡하게 변경 하여 만들어 보니 ... 간단한 벡터 그래픽 영역은 처리가 되는 것 같습니다만 ... 복잡도가 올라가면 실패를 합니다. 아직 이유는 알아 내야 하는 부분이 많습니다만, 현재 odd-even 검사 부분이 뭔가 누락이 되었다거나, conflict 영역 검출 등은 뭔가 원래 소스대..

    Developement/C/C++
    2016.12.19 18:13
  • STL C/C++ 에서 자동 Locale 설정 하기.

    MinGW-W64 가 버젼이 올라 감에 따라 다국어 처리도 강화 되고 있습니다만, 표준 C/C++ 에서 자동으로 한국어 또는 구동되는 OS 에 맞게 std/stl 의 locale 설정을 하고 싶어서 아래 코드 처럼 만들었습니다. 물론 이는 Windows 에서만 해당 하는 부분이며, 사용을 위해서는 와 를 #incldue 로 넣어 주어야 합니다. void procLocale() { #ifdef DEBUG printf("### AUTO LOCALE SET @ WINDOWS ###\n"); #endif ⁄⁄⁄ of DEBUG LCID currentLCID = GetSystemDefaultLangID(); wchar_t currentLoc[LOCALE_NAME_MAX_LENGTH] = {0}; char conv..

    Developement/C/C++
    2016.11.28 14:18
  • MinGW-W64, CPU 명령어 빌드에 맞춰 구동 테스트 하기.

    만약 MinGW-W64 (또는 일반 MinGW) 에서 -mavx 또는 -march=corei7-avx 와 같은 빌드를 지시해서 만든 바이너리를 배포 하는데, 만약 이를 구동하는 PC 가 AVX 관련 명령어를 지원 하지 않는 환경에서 해당 바이너리를 구동하면? 이럴 경우 해당 바이너리는 그냥은 구동이 되나, AVX 관련 명령어가 실행 되는 위치에서 exception 을 뱉고, 해당 callstack 은 이전 pc 로 돌아가나, 여기서 문제가 발생 해서 함수 자체가 멍청이가 됩니다. 그래서 배포한 바이너리가 내가 빌드한 환경과 자동으로 구동 될 PC 에서의 환경과 맞는지를 간단히 테스트 할 수 있는 방법을 gcc 는 물론 MinGW 역시 지원 합니다. 이를 확인 하기 위해서는 먼저 #include 에 를 넣..

    Developement/C/C++
    2016.11.28 14:11
  • FLTK version 1.3.4-1 릴리즈!

    2016년 11월 15일, 드디어 FLTK 1.3.4-1 버젼이 릴리즈 되었습니다. 물론 저는 이에 맞춰 제가 개조해 쓰는 FLTK-1.3.4-1-ts 를 따로 clone 하기도 했습니다만, 1.3.3 으로 부터 뭔가 많은 발전이 있었으며, 특히나 Fl::flush() 와 같은 부분에 신경을 쓴 듯 합니다. FLTK 1.3.4-1 이 1.3.3 마지막 버젼으로 부터 변경된 사항들을 나열해 보면 다음과 같습니다. (원문)FLTK 1.3.4-1 에셔 변경된 점 릴리즈 날짜: 2016년 11월 15일 버그 수정 및 추가 개선사항 - 윈도우즈 IDE 중 비주얼스튜디오 2008과 2010의 빌드 요소중 폴더 위치 참조를 변경함. 주: 이 패치 릴리즈(1.3.4-1) 은 비주얼 스튜디오가 참조하는 폴더 위치만 업데..

    Developement/C/C++
    2016.11.25 11:21