목차
1.히스토그램 기반 영상 처리의 개념
- 히스토그램이란
- 히스토그램 평활화
- 히스토그램 명세화
2. 주요 소스 코드
- 명세화 함수
- 평활화 함수
- 히스토그램 데이터 읽기 함수
- 히스토그램 분포그래프 출력 함수
- 가산 연산 함수
- 곱셈 연산 함수
- Null 연산 함수
- 예외 처리문
3. 평활화 및 명세화 수행 및 비교분석
- 히스토그램 평활화
-> 매우 밝은 영상의 평활화
-> 적절히 어두운 영상의 평활화
- 히스토그램 명세화
-> 적절히 밝은 형태의 히스토그램 분포를 통한 영상 명세화
-> 매우 어두운 형태의 히스토그램 분포를 통한 영상 명세화
4. 고찰 및 참고문헌
5. 부록
- 소스코드 전문 (복사 및 붙여넣기 용도)
- 프로젝트 실행 및 설정, 프로그램 사용 방법 설명
- 히스토그램이란
- 히스토그램 평활화
- 히스토그램 명세화
2. 주요 소스 코드
- 명세화 함수
- 평활화 함수
- 히스토그램 데이터 읽기 함수
- 히스토그램 분포그래프 출력 함수
- 가산 연산 함수
- 곱셈 연산 함수
- Null 연산 함수
- 예외 처리문
3. 평활화 및 명세화 수행 및 비교분석
- 히스토그램 평활화
-> 매우 밝은 영상의 평활화
-> 적절히 어두운 영상의 평활화
- 히스토그램 명세화
-> 적절히 밝은 형태의 히스토그램 분포를 통한 영상 명세화
-> 매우 어두운 형태의 히스토그램 분포를 통한 영상 명세화
4. 고찰 및 참고문헌
5. 부록
- 소스코드 전문 (복사 및 붙여넣기 용도)
- 프로젝트 실행 및 설정, 프로그램 사용 방법 설명
본문내용
OpenHistogram(argv[3]) == 0)
{
printf("histogram can't open\r\n");
return 0;
}
printf("Starting equalize process\r\n");
EqualizeImage(prawbuf,width,height); // 원본 이미지 평활화 완료
printf("Target Image Equalize Complete\r\n");
SpecificateImage(prawbuf,width,height);
SaveBitmap("C:\\specificate.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 6) // 6 : 영상 밝기조정
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
BrightenImage(prawbuf,width,height);
SaveBitmap("C:\\brighten.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 7) // 7 : 강조
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
AccentImage(prawbuf,width,height);
SaveBitmap("C:\\Accent.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 8) // 8 : 그냥 출력
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
JustImage(prawbuf,width,height);
SaveBitmap("C:\\just.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 9) // 9 : 히스토그램 직접 영상으로 출력 =ㅁ=
{
if(OpenHistogram(argv[2]) == 0)
{
printf("histogram can't open\r\n");
return 0;
}
SaveHistograph(histobuf);
}
else
{
printf("0
return 0;
}
}
return 0;
}
/*
if(OpenBitmap(argv[2])==0)
return 0;
SaveHistogram("D:/histogram.txt",prawbuf,width,height,bitcount);
SaveBitmap("D:/save_image.bmp",prawbuf,width,height,bitcount);
*/
프로그램 실행방법 및 수정방법
1. 프로젝트 지정된 위치에 생성
가급적 C: 에 직접 프로젝트를 생성하는것이 편리합니다.
방금 전 이미지 상태에서 확인을 누르면 다음과 같이 뜨는데,
기본 설정으로 진행하므로 그냥 [마침]을 누릅니다.
2. 소스코드 붙여넣기
부록에 첨부되어있는 소스코드 전문을 imagedemo.cpp파일에 옮깁니다
3. 빌드 모드 설정
기본 빌드 모드가 release 로 설정 되어있는데, debug로 바꿔줍니다.
4. 프로젝트 문자 형 설정
Visual Studio 2008 이전 버전들은 [project property]입니다.
기본 설정인 유니코드 문자 집합 사용을 멀티바이트 문자 집합으로 바꿈
여기까지 완료하셨으면 F7을 눌러 빌드를 수행합니다. 오류가 0개로 빌드가 성공해야만 합니다. 올바르게 빌드가 성공하면 프로젝트가 존재하는 폴더 내부에 debug라는 폴더가 생성되고, 그곳에 imagedemo.exe 프로그램이 생성됩니다.
5. 이미지파일 지정된 위치에 저장
웹상에 돌아다니는 256 x 256 비트맵 이미지 파일들로 영상처리를 수행하는 것이 좋습니다. 이들 파일 역시 C:에 직접 저장해줍니다.
6. 도스 환경에서 디버그 모드로 프로그램 실행
[시작]버튼을 누르면 나오는 [실행]을 실행합니다=ㅅ=;
cmd라고 치고 실행하면 도스창이 뜹니다.
처음에 cd C:\ 를 입력하여 기본 경로를 C:\로 바꿔줍니다.
그 상태에서 프로그램을 실행시키기 위해 경로를 지정해주고, 프로그램 모드에 맞도록 필요한 파일 경로를 입력해주면 됩니다.
위의 예제는 4번 모드인 평활화 작업으로, C:\에 있는 lena.bmp를 평활화 하여 equalize.bmp로 저장하는 작업을 수행합니다.
프로그램 모드는 다음과 같습니다.
1 : bmp파일 정보 출력 -> 모드 뒤에 bmp파일 경로 입력
2 : bmp파일 히스토그램 분포 출력 -> 1번과 동일한 경로 입력
결과 파일 - histogram.txt
3 : 영상 반전 -> 역시 동일.
결과 파일 - invert.bmp
4 : 영상 평활화 -> 역시 동일.
결과 파일 - equalize.bmp
5 : 영상 명세화
-> 모드숫자 뒤에 명세화해줄이미지경로 명세화기준히스토그램문서경로
순으로 입력해줍니다.
결과 파일 - specificate.bmp
6 : 가산 연산 -> 모드숫자 6 뒤에 이미지경로 입력후 엔터
-> 전체 픽셀에 더해줄 값 입력 후 엔터
결과 파일 - brighten.bmp
7 : 곱셈 연산 -> 6과 동일하게 이미지 경로 입력후 엔터
-> 전체 픽셀해 곱해줄 값 입력 후 엔터
결과 파일 - accent.bmp
8 : Null 연산 -> 모드 숫자 뒤에 이미지 경로입력
결과 파일 - just.bmp
(일반 이미지 파일을 흑백으로 설정한 뒤 bmp파일 형식으로 저장하여 영상처리를 하기 전에 반드시 이 모드를 수행해 보시기 바랍니다. C환경에서 인식하는 해상도구조가 일반 사진 해상도 구조와 매우 다릅니다.)
9 : Histograph 출력 -> 모드 숫자 뒤에 히스토그램 분포 데이터가 저장되어있는 txt 파일 경로 입력
결과 파일 - histograph.bmp
7. 결과 확인
예제를 실행하면 평활화된 이미지가 C에 저장되어있음을 알 수 있다.
{
printf("histogram can't open\r\n");
return 0;
}
printf("Starting equalize process\r\n");
EqualizeImage(prawbuf,width,height); // 원본 이미지 평활화 완료
printf("Target Image Equalize Complete\r\n");
SpecificateImage(prawbuf,width,height);
SaveBitmap("C:\\specificate.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 6) // 6 : 영상 밝기조정
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
BrightenImage(prawbuf,width,height);
SaveBitmap("C:\\brighten.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 7) // 7 : 강조
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
AccentImage(prawbuf,width,height);
SaveBitmap("C:\\Accent.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 8) // 8 : 그냥 출력
{
if(OpenBitmap(argv[2])==0)
{
printf("image can't open\r\n");
return 0;
}
JustImage(prawbuf,width,height);
SaveBitmap("C:\\just.bmp",prawbuf,width,height,bitcount);
}
else if(progmode == 9) // 9 : 히스토그램 직접 영상으로 출력 =ㅁ=
{
if(OpenHistogram(argv[2]) == 0)
{
printf("histogram can't open\r\n");
return 0;
}
SaveHistograph(histobuf);
}
else
{
printf("0
}
}
return 0;
}
/*
if(OpenBitmap(argv[2])==0)
return 0;
SaveHistogram("D:/histogram.txt",prawbuf,width,height,bitcount);
SaveBitmap("D:/save_image.bmp",prawbuf,width,height,bitcount);
*/
프로그램 실행방법 및 수정방법
1. 프로젝트 지정된 위치에 생성
가급적 C: 에 직접 프로젝트를 생성하는것이 편리합니다.
방금 전 이미지 상태에서 확인을 누르면 다음과 같이 뜨는데,
기본 설정으로 진행하므로 그냥 [마침]을 누릅니다.
2. 소스코드 붙여넣기
부록에 첨부되어있는 소스코드 전문을 imagedemo.cpp파일에 옮깁니다
3. 빌드 모드 설정
기본 빌드 모드가 release 로 설정 되어있는데, debug로 바꿔줍니다.
4. 프로젝트 문자 형 설정
Visual Studio 2008 이전 버전들은 [project property]입니다.
기본 설정인 유니코드 문자 집합 사용을 멀티바이트 문자 집합으로 바꿈
여기까지 완료하셨으면 F7을 눌러 빌드를 수행합니다. 오류가 0개로 빌드가 성공해야만 합니다. 올바르게 빌드가 성공하면 프로젝트가 존재하는 폴더 내부에 debug라는 폴더가 생성되고, 그곳에 imagedemo.exe 프로그램이 생성됩니다.
5. 이미지파일 지정된 위치에 저장
웹상에 돌아다니는 256 x 256 비트맵 이미지 파일들로 영상처리를 수행하는 것이 좋습니다. 이들 파일 역시 C:에 직접 저장해줍니다.
6. 도스 환경에서 디버그 모드로 프로그램 실행
[시작]버튼을 누르면 나오는 [실행]을 실행합니다=ㅅ=;
cmd라고 치고 실행하면 도스창이 뜹니다.
처음에 cd C:\ 를 입력하여 기본 경로를 C:\로 바꿔줍니다.
그 상태에서 프로그램을 실행시키기 위해 경로를 지정해주고, 프로그램 모드에 맞도록 필요한 파일 경로를 입력해주면 됩니다.
위의 예제는 4번 모드인 평활화 작업으로, C:\에 있는 lena.bmp를 평활화 하여 equalize.bmp로 저장하는 작업을 수행합니다.
프로그램 모드는 다음과 같습니다.
1 : bmp파일 정보 출력 -> 모드 뒤에 bmp파일 경로 입력
2 : bmp파일 히스토그램 분포 출력 -> 1번과 동일한 경로 입력
결과 파일 - histogram.txt
3 : 영상 반전 -> 역시 동일.
결과 파일 - invert.bmp
4 : 영상 평활화 -> 역시 동일.
결과 파일 - equalize.bmp
5 : 영상 명세화
-> 모드숫자 뒤에 명세화해줄이미지경로 명세화기준히스토그램문서경로
순으로 입력해줍니다.
결과 파일 - specificate.bmp
6 : 가산 연산 -> 모드숫자 6 뒤에 이미지경로 입력후 엔터
-> 전체 픽셀에 더해줄 값 입력 후 엔터
결과 파일 - brighten.bmp
7 : 곱셈 연산 -> 6과 동일하게 이미지 경로 입력후 엔터
-> 전체 픽셀해 곱해줄 값 입력 후 엔터
결과 파일 - accent.bmp
8 : Null 연산 -> 모드 숫자 뒤에 이미지 경로입력
결과 파일 - just.bmp
(일반 이미지 파일을 흑백으로 설정한 뒤 bmp파일 형식으로 저장하여 영상처리를 하기 전에 반드시 이 모드를 수행해 보시기 바랍니다. C환경에서 인식하는 해상도구조가 일반 사진 해상도 구조와 매우 다릅니다.)
9 : Histograph 출력 -> 모드 숫자 뒤에 히스토그램 분포 데이터가 저장되어있는 txt 파일 경로 입력
결과 파일 - histograph.bmp
7. 결과 확인
예제를 실행하면 평활화된 이미지가 C에 저장되어있음을 알 수 있다.
추천자료
통계학 정리
중학교 수학수업 실습안
[알고리즘요약, 알고리즘] 알고리즘 요점정리 서브노트
[초등지도안]5학년 수학지도안 세안(가- 8. 문제 푸는 방법 찾기)
벡터를 계산하는 인터프리터
MATLAB(매틀랩, 매트랩)의 개념과 구성, MATLAB(매틀랩, 매트랩) 윈도우, MATLAB(매틀랩, 매...
[초등수학]초등학교 2학년 수학과(수학교육) 목표와 성취기준, 초등학교 2학년 수학과(수학교...
[계산기]수학교구(수학학습도구) 계산기의 활용 배경과 주요지침, 수학교구(수학학습도구) 계...
정보통신학 기본용어 정리
특수교육 수학과 학습 지도안
컴퓨터부품을 인간의 두뇌와 감각기관에 비교설명하고 좀 더 컴퓨터가 인간을 능동적으로 돕...
어셈블리 언어
MATLAB08
[디지털 회로실험] 1장.기본 논리 게이트 (예비)
소개글