* Morphology
▷ structuring element는 길이가 3 pixel인 십자(+)형을 사용
▷ dilation / erosion / opening / closing 수행
- 주요 소스코드
/* 팽창 연산 */
void dilation(int width, int height){
int t= width*height; //크기 저장
int *dst; //동적 할당
dst = (int *) malloc (sizeof(int)* t);
for(i=0; i<width*height; i++){
dst[i]=0; //초기값 설정
}
for(i=0; i<height; i++){
for(j=0; j<width; j++){
if(buffer[i*width+j]==255){
//픽셀의 밝기값이 255이면, 그 주변 (십자모양) 의 밝기 값을 변경
//임의의 변수에다 저장
dst[(i*width)+j-1] = 255;
dst[(i*width)+j+1] = 255;
dst[(i-1)*width+j] = 255;
dst[(i+1)*width+j] = 255;
dst[i*width+j] = 255;
}
}
}
// 영상 출력
for(i=0; i<height; i++){
for(j=0; j<width; j++){
//임의의 변수에 저장된 값이 255면,밝기는 255;
if(dst[i*width+j] == 255)
buffer[i*width+j] = 255;
//임의의 변수에 저장된 값이 0이면,밝기는 255;
else
buffer[i*width+j] = 0;
}
}
free(dst); //동적 할당 해제
}
/*침식 연산*/
void erosion(int width, int height){
int t= width*height; //크기 설정
int *dst; //동적 할당
dst = (int *) malloc (sizeof(int)* t);
for(i=0; i<width*height; i++){
dst[i]=0;//초기값 설정
}
for(i=0; i<height; i++){
for(j=0; j<width; j++){
//밝기값이 255이고
if(buffer[i*width+j] == 255){
//그 주변 (십자 모양)에 0이 하나라도 있으면
if(buffer[(i-1)*width+j] == 0 || buffer[(i+1)*width+j] == 0 || buffer[i*width+j-1] == 0 || buffer[i*width+j+1] == 0)
//임의의 변수에 0 저장
dst[i*width+j] = 0;
//하나라도 0이아니라면, 모두 255라면, 255 저장
else
dst[i*width+j] = 255;
}
}
}
//영상 출력
for(i=0; i<height; i++){
for(j=0; j<width; j++){
//임의의 변수의 값이 255이면
if(dst[i*width+j] == 255)
//밝기는 255임
buffer[i*width+j] = 255;
//변수 값이 255가 아니라면
else
//밝기는 0임
buffer[i*width+j] = 0;
}
}
free(dst);
}
/* 열림 연산 */
void opening(int width, int height){
//침식 연산 적용 후,
erosion(width, height);
//팽창 연산
dilation(width, height);
}
/* 닫힘 연산 */
void closing(int width, int height){
//팽창 연산 적용 후,
dilation(width, height);
//침식 연산
erosion(width, height);
}
'컴퓨터비전' 카테고리의 다른 글
| 7. Template matching (0) | 2015.09.17 |
|---|---|
| 6. Iterative thresholding / Otsu's thresholding (0) | 2015.09.17 |
| 4. boundary following (0) | 2015.09.17 |
| 3. connected component labelling (0) | 2015.09.17 |
| 2. 이진영상의 중심좌표/방향/장축,단축길이 구하기 (0) | 2015.09.17 |