공학프로그래밍 설계과제 - C와 MATLAB을 사용한 B-mode 영상
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

공학프로그래밍 설계과제 - C와 MATLAB을 사용한 B-mode 영상 에 대한 보고서 자료입니다.

목차

A. 세부 목표 및 이론 (Sub-objective and Theory)
B. 코드 (Code)
C. 결과 분석 (Result Analysis)

본문내용

n("C:\... .dat","rb");
fread(lpf, sizeof(short), N_LPF_KERNEL, fpinput);
fclose(fpinput);
B. Data Alignment
Data 를 malloc 등의 함수를 사용해 할당한 메모리에 가로 세로 크기에 맞추어 저장한다.
double pointer를 사용하여 2차원배열 RF_data_reshaped를 선언하였다.
ex)
signed short *RF_data = (signed short*) malloc(sizeof(signed short)*N_DATA);
signed short **RF_data_reshaped =
(signed short**) calloc(sizeof(signed short*),N_VECTORS);
for (i=0; i < N_VECTORS; i++)
RF_data_reshaped[i] = (signed short*) calloc (sizeof(signed short), N_SAMPLES);
for(iVector = 0; iVector for (iSample = 0; iSample< N_SAMPLES; iSample++)
RF_data_reshaped[iVector][iSample] = RF_data[iVector*N_SAMPLES+iSample];
C. Demodulation (user defined function, convolution user defined function, DLL)
Quadrature demodulation 을 사용하여 data를 inphase, quadrature 성분으로 추출한다.
inphase, quadrature 성분에 각각 cos(2fc/fs*i)을 곱하여 demodulation 해준다.
ex)
for (i = 0; i< N_SAMPLES; i++)
{
de_cos[i] = (double)data[i] * cos(2*PI/9*i);
de_sin[i] = (double)data[i] * sin(2*PI/9*i);
}
demodulation 해준 후 lpf와 convolution 해준다.
ex)
for(int i=0;i {
for(int j=0;j < N_SAMPLES && j < i ;j++)
{
*(inph_s+i) += *(de_cos+j)* (double)*(lpf+i-j);
*(quad_s+i) += *(de_sin+j)* (double)*(lpf+i-j);
}
}
D. Envelope Detection (user defined function, static library)
Inphase, quadrature 성분으로부터 data 의 envelope 을 추출한다.
inphase, quadrature 성분을 각각 제곱 한 후 더한 값에 루트를 씌워준다.
ex)
c[i] = (sqrt(a[i]*a[i] + b[i]*b[i]));
E. Log-Compression (user defined function, static library)
Log 를 사용하여 data 의 dynamic range 를 조절한다. Dynamic range 는 60 dB 로 정한다. 결과의 최대값과 최소값이 255 와 0 이 되도록 한다.
ex)
c[i] = (signed short)20*log10(envelope_temp[i])/60 * 255;
F. Data Storage
처리한 결과를 “output_c.dat” 파일에 signed short 형식의 바이너리 파일로 저장한다.
fopen, fwrite 등의 함수를 사용하여 바이너리 파일로 저장하였다.
ex)
FILE *fpoutput;
fpoutput = fopen("C:\\... .dat","wb");
for (iVector =0; iVector < N_VECTORS; iVector++)
fwrite(Env_data_dB[iVector], sizeof(signed short), N_SAMPLES, fpoutput);
fclose(fpoutput);
§ MATLAB
A. Data Load
C 코드로부터의 결과물을 알맞은 포맷으로 읽어 들인다.
fopen, fread 등의 함수를 사용하여 data를 불러온다.
ex)
fid = fopen('output_c.dat','rb');
output_c = fread(fid,'int16');
fclose(fid);
B. Data Alignment
Data 의 가로, 세로 크기에 맞추어 data 의 size 를 변경한다. (reshape function)
reshape 함수를 사용하여 size를 변경하였다.
ex)
RF_data = reshape(output_c,3154,192);
C. Interpolation and Decimation
Data 를 출력 영상 크기에 맞추기 위하여 interpolation 과 decimation 을 수행한다.
만들어준 interpolation이 제대로 수행되었는지 확인하기 위해 결과 값을 매틀랩의 interpolation 함수의 결과와 비교하였고 그 결과 값이 일치하여 올바르게 수행되었음을 확인하였다.
D. Data Visualization
결과 영상을 MATLAB 의 image 함수를 사용하여 gray scale 로 생성한다.
ex)
figure(2);
imagesc(RF_data_final);
colormap(gray);truesize;
RF_data_uint = uint8(round(RF_data_final));
E. Data Storage
생성한 데이터를 “output_MATLAB.dat” 파일에 unsigned character 형식의 바이너리 파일로 저장한다. 생성한 영상을 BMP 형식의 “output.bmp” 파일로 저장한다. (imwrite function)
ex)
fid = fopen('output_mat.dat','w');
fwrite(fid,RF_data_final,'int16');
fclose(fid);
imwrite(RF_data_uint, 'output.bmp', 'bmp');
output.bmp
  • 가격2,000
  • 페이지수13페이지
  • 등록일2012.12.24
  • 저작시기2012.12
  • 파일형식한글(hwp)
  • 자료번호#827298
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니