여러개의 vertical cell 들을 하나의 긴 vertical cell로 길게 합치기


list_all={};


for i=1:len

    fp = fopen(cell_name{i},'r');

    imfilelist = textscan(fp,'%s');

    imfilelist = imfilelist{:};

    list_all =  {list_all{:}, imfilelist{:}};

    fclose(fp);

end


 list_all = list_all'; % 이걸 주석으로 막으면 horizontal cell로 합쳐짐



- 위의 코드로 안될 경우



list_all={};


for i=1:len

    fp = fopen(cell_name{i},'r');

    imfilelist = textscan(fp,'%s');

    fclose(fp);


    list_all =  [list_all; imfilelist{:}];


end

Posted by 우주여행가
,

cell에 이러한 data가 있다고 가정




text 파일로 한 번에 쓰기


 fp= fopen('test.txt,'w');

 fprintf(fp,'%s\n',imfilelist5{:});

 fclose(fp);


* cell에 string과 숫자가 섞여 있을때



cell에 string과 숫자가 섞여 있음


[오류]

 fp= fopen('test.txt,'w');

 fprintf(fp,'%s\t%d\t%d\t%d\n',ref_gps{:});

 fclose(fp);


위와 같이 실행하면, cell의 1열부터 vertical 방향으로 

차례로 쓰기 때문에, 화면에 보이는 것과 같이 저장되지 않고 오류 발생


아래와 같이 cell을 한 번 transpose 해주고, fprintf 실행하면 해결


[정상]

ref_gps=ref_gps';

 fp= fopen('test.txt,'w');

 fprintf(fp,'%s\t%d\t%d\t%d\n',ref_gps{:});

 fclose(fp);


fprintf가 열방향으로 vertical하게 순서대로 쓰므로, 결과 text 파일은 아래와 같이 원래 원하던 폼으로 출력됨.



참고

http://stackoverflow.com/questions/13420289/matlab-creating-a-txt-file-containing-numbers-and-strings-from-a-cell

Posted by 우주여행가
,

http://winmerge.org/

소스의 변경된 부분을 쉽게 파악 가능


참고

http://blog.naver.com/reinstate10/220144595705

Posted by 우주여행가
,

'연구관련' 카테고리의 다른 글

SVM 링크  (0) 2014.06.16
Qualcomm FastCV Library  (0) 2013.06.04
Photosynth  (0) 2013.06.04
[Photo Tourism] Structure From Motion Code  (0) 2013.06.04
The PASCAL Visual Object Classes Homepage  (0) 2013.05.31
Posted by 우주여행가
,

SVM 링크

연구관련 2014. 6. 16. 09:00

http://support-vector-machines.org/

'연구관련' 카테고리의 다른 글

Viola Jones Face Detector (OpenCV) 시각화  (0) 2014.07.17
Qualcomm FastCV Library  (0) 2013.06.04
Photosynth  (0) 2013.06.04
[Photo Tourism] Structure From Motion Code  (0) 2013.06.04
The PASCAL Visual Object Classes Homepage  (0) 2013.05.31
Posted by 우주여행가
,

imshow가 처리하는 데이터 타입형은 uint8 형 또는 [0,1] 사이의 값을 갖는 double 형이다.


double 형 data의 범위를 꼭 [0,1] 사이로 정규화 하여야 한다.


예를 들어 N장의 uint8 영상의 평균값을 구하면,


평균영상을 double 형으로 선언하였다면,


이 영상에 N개의 영상의 합계를 저장하고, 영상을 255*N 으로 나누어야 한다. 


(N : 평균을 구하기 위해, 255 : 0~1 정규화하기 위해)

Posted by 우주여행가
,

특정 폴더 내의 특정 파일을 모두 불러오고 싶은 경우

(폴더 내의 이미지를 모두 불러오기 등)


dir 명령어를 쓰면 손쉽게 해결할 수 있다.


디렉토리 경로 밑에 '*.확장자' 를 붙여주면 끝.





list = dir('D:\Pictures\*.jpg');

N = size(list,1);


for i=1:N

 fn = ['D:\Pictures\ list(i).name];

IM= imread(fn);

~~

~~


end





Posted by 우주여행가
,

MATLAB에서 대규모의 영상에 대해, 결과를 직접 눈으로 검토해야 할 경우가 있다.


예를 들어, 얼굴검출 결과를 본다거나, tone mapping 결과를 본다거나...



이때 보통 for문 안에서


pause 함수를 써서 몇초간 기다렸다가 다음 영상의 결과를 볼 수도 있지만


(pause(n)  : pause for 5 seconds)


대부분의 결과 영상은 빨리 넘기고, 특정 영상은 자세히 관찰해야하는 경우와 같이


for문 안에서 그림을 넘기는 시점을 직접 제어해야 편리할 때가 있다.


이때는 waitforbuttonpress 함수를 써보자.






for i=1:N


% image processing

% algorithm


% 결과 display

figure;

imshow(I)


% 사용자가 버튼을 누를때, 다음 영상으로 이동

waitforbuttonpress;


end





MATLAB의 설명


 WAITFORBUTTONPRESS Wait for key/buttonpress over figure.

    T = WAITFORBUTTONPRESS stops program execution until a key or

    mouse button is pressed over a figure window.  Returns 0

    when terminated by a mouse buttonpress, or 1 when terminated

    by a keypress.  Additional information about the terminating

    event is available from the current figure.

 

    Example:

        f = figure;

        disp('This will print immediately');

        keydown = waitforbuttonpress;

        if (keydown == 0)

            disp('Mouse button was pressed');

        else

            disp('Key was pressed');

        end

        close(f);




Posted by 우주여행가
,

연구용 이미지 DB를 수집 중인데,


특정 사이트의 공개된 DB에 실제 이미지 파일 대신, URL만 적혀있는 경우가 있었다.


MATLAB으로 간편하게, URL 리스트를 입력받아 로컬에 저장하면, 손쉽게 DB를 모을 수 있다.


여기서는 urlread , urlwrite, fileparts 함수 등을 이용하였다.



url_list : url이 담긴 리스트

N : url 리스트의 길이






 for i=1:N

       url = url_list(i);         

       X = [ '[',num2str(i) ,'/', num2str(N), ']',':', url];

       disp(X);        

     

       [path, name, ext] = fileparts(url);

       name = [name ext];

       [S , STATUS] = urlread(url);

       if STATUS == 1

        urlwrite(url,name);

       end

   end





모든 url에 실제 파일이 존재하면 urlread는 사용하지 않아도 무방하지만, 


url 리스트에 있는 일부 url에 실제 파일이 존재하지 않을 경우 urlwrite에서 오류가 나서 


loop를 빠져나오기 때문에,


파일의 실제 존재 여부를 확인하기 위해서 urlread로 STATUS를 알아내고,


STATUS가 1인 경우에만, 즉 파일이 존재할 경우에만 파일로 저장하였다.


fileparts 함수는 url 에서 파일이름을 추출할때 사용하였다.


예를 들어 아래 URL에서 파일이름만 따올 경우 

http://assets0.chictopia.com/photos/Amber_Randell/6454092040/geometric-print-motel-rocks-dress-striped-zara-blazer-charlotte-russe-purse_400.jpg


파일이름을 fileparts를 이용하여

geometric-print-motel-rocks-dress-striped-zara-blazer-charlotte-russe-purse_400.jpg 로 지정하여 저장한다..



Posted by 우주여행가
,

char형 단위로 초기화 시킬 수 있기 때문에

memset으로 float형 array를 1로 초기화 하는 것은 불가능

(1바이트 단위로 값이 assign되기 때문에 , 초기화값이 다름)


http://rockdrumy.tistory.com/328

http://blog.naver.com/cor2738?Redirect=Log&logNo=150119468104

Posted by 우주여행가
,