2020년 9월 25일 금요일

colour-demosaic python package

to execute demosaic example 

1. Find a proper source

    - Colour - Demosaicing 

        - Colour Science library install

            - when install modify setup.py (long_description = open('README.rst', encoding='UTF8').read())

        - pip install colour-demosaicing

2. example

    - in "colour-demosaicing" package

    - python folder\Lib\site-packages\colour_demosaicing\examples\examples_bayer.ipynb

    - add extention when read image -> colour.io.read_image(temp_path, format ='exr')

    - install freeimage binary


**1

this post give me the clue about reading image error

error message: Could not find a format to read the specified file in single-image mode

https://stackoverflow.com/questions/60713874/grayscale-image-not-a-jpeg

2020년 8월 1일 토요일

2020년 7월 23일 목요일

C++ 의 List와 Vector의 차이

https://thispointer.com/difference-between-vector-and-list-in-c/

이 문서는 C++의 std::vector 와 std::list의 다른 점에 대하여 논의할 것이다.

Vector와 List는 C++에서 Sequential한 Container이다.
Standard Template Library 이다.
이 두 Container의 내부 구현은 다른점이 많다.

List는 연속적이지 않은 Memory 장소에 각 요소들을 저장하고 있다. 다른말로 하면 double linked list로 구현이 되어 있다.

반면에 Vector는 각 요소들을 연속적인 Memory 장소에 저장하고 있다.

std::vector vs std::list
1.) Insertion and Deletion
List는 Vector에 비하여 삽입과 삭제가 효율적이다. 앞, 뒤, 중간 어디에서 작업을 하던지 몇개의 pointer만을 바꿔주면 되기 때문이다.

반면에 Vector는 앞이나 중간에 삽입이나 삭제를 하면 전체 요소들이 전부 이동을 해야 한다. 새로운 장소를 찾아야 하고 모든 값들이 복사되어야 한다.

2.) Random Access:
List가 내부적으로 Double Linked List로 구현되어 있기 때문에, random access 는 허용되지 않는다. 예를 들어 15번째 요소에 접근하려고 하면 iterator를 통하여 14개의 요소를 통과해야 한다는 것이다.

반면에 Vector는 Array 처럼 요소들을 연속된 Memory에 저장하고 있다. 그래서 Vector는 random access 가 가능하다. 예를 들어 15번째 요소에 접근 하려면
std::vector<int> vec(2);
vec[15] = 10;

그래서, List는 random access 가 필요한 STL algorithm 은 사용하지 못한다.

3.) Iterator Invalidation
List에서는 삭제나 삽입작업이 interator를 무효화 하는 경우가 없다. 왜냐하면 삽입이나 삭제할 경우에도 요소가 움직이는 경우가 없이 몇개의 포인터만 변경되기 때문이다.

4.) Special Member Fucntion
std::list 가 random access 를 제공하지 않기 때문에 많은 random access 를 사용하는 많은 STL 알고리즘들이 List에서 사용되지 못한다. 그래서 std::lisst에서는 추가적인 함수들을 제공하는데 이들은 Sorting, Spicing, Removing 인 것들이다.

2020년 5월 7일 목요일

MATLAB IDE 관련

1. 현재 폴더의 column 항목을 변경하고 싶을 때
    - 현재폴더 window의 오른쪽 위 화살표를 누르면 아래 이미지를 찾을 수 있고, 표시에서 변경하면 된다.

2020년 4월 29일 수요일

Designing Your Life | Bill Burnett | TEDxStanford | MYMEMO


목적: 커서 무엇이 되고 싶은지 안다.

잘못된 신념
    1) What is your passion
    2) You should know where you're going by now
    3) Be the best version of you

방법
    1) Who you are, What you believe, What you do 에 대한 일관적인 이야기를 만들어 내라
    2) Gravity and Accept, accept-empathize-define-ideate-prototype-test
    3) Ideate 3 five-year versions of me
    4) Prototyping
    5) Choosing well, gather&create -> narrow down ->choise->agonize->let go and move on

2020년 4월 26일 일요일

Notepad++, Notepad PlusPlus

1. Tab 을 한눈에 보고 싶을 때
    - Setting - General - Tab Bar - Multiline checked

Terminal, cmd, Teraterm

1. Terminal 에서 사용가능한 Font 설치
    - 마음에 드는 font 찾기
    - 설치(DejaVu) -> download 받은 후 ttf
    - console 에서는 monospace 설치 가능
 

    - 관련 정보
        1) monospace: 고정너비
        2) Command Prompt will recognize only monospace fonts

2. 색상 변경
    - 마음에 드는 색상 찾기
        - R:0, G:240, B:0 이 눈에 편했다.
    - Teraterm: setup-window 에서 색상 변경
    

2020년 4월 24일 금요일

C++ 시험공부

1. namespace
    scope 을 구분해 주는 역할을 한다.
    namespace 의 이름을 지정해 주면 using 혹은 name:: 을 통해서 접근이 가능하다.
    namespace without name
        - It's called an unnamed namespace / anonymous namespace. It's use is to make functions/objects/etc accessible only within that file. It's almost the same as static in C.

2. C++ 에서의 struct
    class 와 동일하게 동작하여 상속 등을 사용할 수 있다.
    다른점은 class 가 기본 접근지시자가 private 이라면 struct 는 public 이다.

3.  C++ 생성자와 초기화
    이렇게 하면 argument 로 member 변수가 초기화 된다.
    class name  {
        int member_x;
        int member_y;
    name(int arg1, int arg2) : member_x(arg1), member_y(arg2);
}


2020년 4월 22일 수요일

Source Insight

1. 지금 보고있는 file 의 Folder 열기
    1) cutom command 설정
    2) key 설정에서 해당 command 의 단축키 설정
        - ex> explorer %d 하니까 가능

2. Line Number
    1) Options -> Document Options
    2) 'Document Options' Dialog box -> Show line numbers 

2020년 4월 12일 일요일

python으로 google calendar api 사용

1.
python tutorial 에서 https://developers.google.com/calendar/quickstart/python
quickstart.py 까지 실행하여 credentials.json 생성

2.
만들어진 코드를 사용 하여 event 생성하면 만들어짐
https://github.com/karenapp/google-calendar-python-api

3.
excel 과 integration 할 것이기 때문에 win32com.client 라이브러리로 excel 사용

2020년 4월 1일 수요일

python 가상환경

1. 가상환경을 만든다.
2. 가상환경을 사용한다.

1. 가상환경을 만든다.
    option 1) python -m venv "내가상환경폴더이름"
        - venv 라는 module 을 사용해서 가상환경을 만들어라
    option 2) virtualenv "내가상환경폴더이름"
        - option 1과 동일한 작업을 수행한다.
        - python 과 virtualenv 를 바로 사용할 수 있는것은 내 컴퓨터에 해당 exe 가 있는 폴더가 환경변수 path 로 등록되었기 때문

2. 가상환경을 사용한다.
    - 가상환경 폴더에 scripts 라는 폴더가 생기고 그 안에 python.exe 파일을 사용할 수 있다.

2019년 12월 1일 일요일

업무 Case Study

1. 평균 비교
a. A 회사의 카메라를 B 회사에서 사용하고 있다.
b. B 회사는 차량 OEM 으로 Left, Right Mirror에 A 회사의 카메라를 사용하고 있다.
c. 그런데 Right Mirror 에서 각도의 편차가 Spec을 벗어 나는 것을 확인하였다.
d. 하지만 Left 에서는 각도의 편차가 Spec을 벗어나지 않았다.
e. 이 내용을 증명하기 위해서 Minitab 을 사용하였다.
f. 2 표본 t 검증 사용하였다.
g. Test 결과는 아래와 같았다.



h. 결과를 해석하는 것은 Minitab Web Page 에 설명되어 있다.(Link)
i. 직접 해석하자면 (1/2)
Left1 과 Left2 에 대해서 각각 수량, 평규, 표준편차를 보여준다.
평균의 표준오차는 익숙하지 않은 개념인데
평균의 표준 오차는 표본 간의 변동성을 추정하는 반면, 표준 편차는 단일 표본 내의 변동성을 측정합니다.
를 의미하며
평균의 표준 오차를 사용하여 표본의 평균이 모평균을 얼마나 정확하게 추정하는지 확인할 수 있습니다. 평균의 표준 오차의 하한 값은 모집단 평균의 더 정확한 추정치를 나타냅니다. 일반적으로, 표준 편차가 클수록 평균의 표준 오차가 더 크고 추정치가 덜 정확합니다. 표본 크기가 클수록 평균의 표준 오차가 더 작고 추정치가 더 정확하게 됩니다.
이라고 합니다.
그러면 궁금한 것은 표준오차가 어느정도 되어야 믿을 수 있는 것인가 인데 이부분은 남겨두고
j. 귀무 가설과 대립 가설
연구에서 검증하는 가설을 귀무가설이라고 하고 이와 대립되는 가설을 대립 가설이라고 한다.
P 값이 알파값(보통 0.05)보다 작으면 이 귀무가설을 따르지 않는다고 하고 알파값 보다 크면 귀무가설을 따른다고 한다.
k. 위에서는 귀무가설은 두 그룹의 평균이 0.01 차이가 난다(0.01이내로)
이때의 P 값은 Left 가 0.035 으로 귀무가설을 채택하지 않는다.
이때의 P 값은 Right 가 01.00 으로 귀무가설을 채택 한다.




2019년 10월 29일 화요일

matlab file load, save

1. what is mat file
MAT-files are binary MATLAB® files that store workspace variables.
matlab 에서 사용하는 binary 파일이다. 세부 형식은 matlab 고유의 방식이지 않을까

Starting with MAT-file Version 4, there are several subsequent versions of MAT-files that support an increasing set of features. MATLAB releases R2006b and later all support all MAT-file versions.
지금까자 여러 버전의 mat 파일이 존재하며 R2006b 부터는 모든 mat 파일이 지원된다고 하니 이후에는 업데이트 된 것이 없다고 봐야 하는 것인가.


2. load function
load('filename') 일 때는 filename 에 확장자가 명시되어 있으며 확장자를 따른다. mat 형식이나 ascii 형식이 있을 수 있다. 그래서 mat 이라고 적혀있지 않으면 ascii 형식으로 load 한다.
그래서 load('filename', '-mat') 으로 하면 확장자에 구애하지 않고 mat 파일을 load 한다.

3. save function
save('filename', '-struct', structName) 일 때 structName 구조체의 값들을 filename 에 개별 변수로 저장한다.
이 때 이렇게 저장한 filename 을 tmp_name = load('filename', 'mat') 으로 load 하면 tmp_name 이 structName 의 모든 변수를 가진 구조체가 된다.

2019년 7월 21일 일요일

MATLAB

단축키
    - 여러줄 주석 처리 ctrl + r
    - 여러줄 주석 해제 ctrl + t

2019년 7월 20일 토요일

Visual Studio Code - Python

1. python 실행파일 경로 연결할 때
    - settings.json 에서 경로를 지정해 준다.
{
"python.pythonPath": "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\python.exe",
"scm.alwaysShowActions": true,
"window.zoomLevel": -1,
"python.jediEnabled": false
}

2. Argument 줄 때
    - launch.json 에서 아래와 같이 args 안에 순서대로 입력

"configurations": [
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"-s",
"00003521"
],
"cwd": "${fileDirname}"
},

3. file explorer 부를 때
    - ctrl + shift + E

4. 모든 커맨드를 실행할 때
    - ctrl + shift + p
    - show all command 라고 부른다.

5. 특정 파일을 부를 때
    - show all command 한 다음 launch.json 이나 settings.json 을 친다.

6. debug 진행
---
A debug toolbar appears along the top with the following commands from left to right: continue (F5), step over (F10), step into (F11), step out (Shift+F11), restart (Ctrl+Shift+F5), and stop (Shift+F5).
---
 
7. python version check
python -V

8. pyhton computer check
$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

9. turtle 로 그림 그리기
    1) turtle 로 라인 그리기
    2) turtle 의 screen size 조정하기
    3) turtle 의 origin 설정하기
    4) pen  color 설정하기
    5) svg 이미지로 저장하기
    6) svg 이미지를 png 로 변환하기 https://pypi.org/project/svglib/













2019년 5월 19일 일요일

MFC C++ Note

특정 Cotrol 의 색을 변경하고 싶을 때
1. Dialog 의 Window Message 중 WM_CTLCOLOR 을 Enable 한다.
2. OnCtlColor 함수가 자동으로 생긴다.
3. OnCtlColor 함수는 Control이 보여주는 이벤트가 생길 때(Test 를 쓰거나 등) 불리게 된다. (참조: Link)
4. OnCtlColor 함수를 적어준다. (참조: Link)
5. 내가 원하는 특정 Control 만을 변경시키고 싶으면 각 case 안 해당 코드에 if 를 넣어주면 된다.



No 4
HBRUSH Cxxxxxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  Change any attributes of the DC here
switch(nCtlColor){
case CTLCOLOR_DLG:   /// 다이얼로그 배경색을 white로.
{        return (HBRUSH)GetStockObject(WHITE_BRUSH);
        break;
}
case CTLCOLOR_BTN :    // 버튼의 배경색을 투명으로...
{
        pDC->SetBkMode(TRANSPARENT);
                  return (HBRUSH)::GetStockObject(NULL_BRUSH);
        }
         case CTLCOLOR_STATIC:
        {
               pDC->SetTextColor(RGB(0,255,255));  // static text 글자색 변경
                 pDC->SetBkMode(TRANSPARENT);   // static text 배경색 투명
                 return (HBRUSH)::GetStockObject(NULL_BRUSH);
        }
}
// TODO:  Return a different brush if the default is not desired
return hbr;
}

2019년 4월 22일 월요일

Matlab

   
CSV 로 출력할 때
simulation_results = [FP_2_x(h,i), FP_2_y(h,i), R_2(1,i), R_2(2,i)-Da];
dlmwrite('C:\simulaton_results.csv', simulation_results, '-append');

dlmwrite('C:\FP_2_x__h_i.csv', FP_2_x(h,i));

2019년 3월 1일 금요일

Visual Studio 2017 노트

목적: Visual Studio 2017(이하 vs17) 로 opencv 를 사용하고 싶다.

1. opencv library를 찾아야 한다.
    1) 어떤 opencv version 을 사용할 것인지 정한다  
        - 기본 기능이 동작하는지 확인하는 것이므로 아무 version 상관없다.
        - vs17을 사용해야 하므로 vs17 지원하는 version이 필요하다. 
             + vs17 은 vc15(Visual Studio Compiler 15?) 를 써야 한다.
        -> 3.4.3 은 vs17 지원하므로 사용하기로 했다.
    2) opencv를 빌드 한다.
        - 배포되는 opencv 들은 필요한 binary 가 모두 빌드된 것이 아니라 추가된 기능한 빌드된 것이기 때문에 직접 빌드를 해야한다.
        - x64 컴퓨터라고 x64 실행하려고 하면 안된다 왜냐하면 dll 들이 거의 다 x86 이기 때문?
        - CMake/vs17 로 빌드하면 vs17 프로젝트 generate 가능하며 이 프로젝트로 빌드하면 필요한 dll 들을 생성할 수 있다. 이것들로 프로그램 실행하면 된다.
         - cmake 사용 방법
             https://stackoverflow.com/questions/43786856/how-can-i-install-configure-opencv3-2-0-with-c-visual-studio-2017
2. 빌드를 한 후에는 링크에 모든 lib 파일이름을 적어준다.

목적: Visual Studio Debug

debug 시작해도 관련 dll 을 로딩하는데 시간이 걸릴 수 있다.

2019년 2월 12일 화요일