5장 포인트 처리(point processing)

Slides:



Advertisements
Similar presentations
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Advertisements

1 차시 : SW 코딩으로 배우는 3D 기초작품 및 톱니바퀴 만들기 1)SPL3D 프린팅 툴 설치하기 2) 도형 추가하기 3) 도형 연산 명령어 익히기 4)3D 프린터 출력을 위한 STL 파일 내보내기 5) 하트모양 만들기 6) 하트모양 열쇠고리 만들기 7) 변수와 수식.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷
DB 프로그래밍 학기.
DB 프로그래밍 학기.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
풀 다운 메뉴 File > New “intent” 이름을 넣고 OK 를 클릭한다.
코크파트너 설치 가이드 Window 7.
신호처리 실험 (Signal Processing Lab)
아두이노 센서의 연결 디지털 및 아날로그 센서값의 특징 디지털 센서 핀 구조 및 연결하기 아날로그 센서 핀 구조 및 연결하기
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
제 9 장 구조체와 공용체.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
Outlook Express 메일 백업 및 복원가이드
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Chapter 04 C 연산자의 이해.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
23장. 구조체와 사용자 정의 자료형 2.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
영상처리 실습 인공지능연구실.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
1차시: 낮과 밤이 생기는 원리 지구과학
8장. spss statistics 20의 데이터 변환
PSD센서 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 PSD센서 명령어 이해 및 실습 응용 작품 만들기.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
7주차: Functions and Arrays
04장 ㅎㅎ 화소점 처리 화소 점 처리의 개념 디지털 영상의 산술연산과 논리연산 디지털 영상의 다양한 화소 점 처리 기법
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
구조체(struct)와 공용체(union)
2장. 페인트샵을 이용한 영상처리 맛보기 신라대학교 임은경 2주차 - 페인트샵을 이용한 영상처리 맛보기.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
Installation Guide.
9장. spss statistics 20의 데이터 변수계산
Power Point 예제 디자인 적용 (서식) - (디자인적용) - (원하는 디자인 선택)
7 생성자 함수.
6 객체.
BoardGame 보드게임 따라가기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

5장 포인트 처리(point processing) 영상처리의 가장 기본적인 처리 기법 영상데이터에 대한 사용자 접근의 시작 영상을 취급하는 디지털 전자기기에서 많이 사용함 픽셀로 이루어진 영상에서 하나하나의 단위픽셀 각각에 독립적으로 작용하는 처리

점처리 vs. 영역처리 1.픽셀단위의 산술연산 - 70을 변화시키기 위해 (4,4)의 자신만의 데이터를 사용한 경우 70+30=100 vs. - (4,4)위치 인근의 여러 점들을 사용하는 경우:인접영역에 기반한 커널(kernel) 기반 영상처리

상수값에 의한 산술연산 입력 영상 상수 더하기(원영상+60) 상수곱하기(원영상*1.4) 상수 빼기 (원영상-60) 입력 영상 상수 더하기(원영상+60) 상수곱하기(원영상*1.4) 상수 빼기 (원영상-60) - 상수값 더하기와 곱하기의 차이는 대비(contrast)의 차이

상수값에 의한 산술연산 영상 값 클램핑(Clipping) - InImg[x][y], OutImg[x][y] 둘 다는 0~255사이의 값 - C1~C4도 0~255사이의 값을 가져야 함 - 값을 더하거나 조작하여 결과값은 0~255사이의 범위를 벗어나는 경우 방지 필요

두 영상 사이의 산술연산(프레임 연산, Frame operation)

두 영상 사이의 산술연산 배경(background)영상 입력영상 차분 영상

룩업 테이블 연산 룩업 테이블(Lookup Table: LUT) 연산 - 산술연산의 고속수행을 위해 사용 - 점처리 기법에서 가장 효과적으로 사용됨 3비트 LUT 를 이용한 연산

룩업 테이블 연산 예) LUT에 의한 고속 연산: 상수 곱에 의한 대비처리의 고속화 for( i=0; i<height; i++) { for( j=0; j<width; j++) { temp = (int)( InImg[i][j]*1.4); // 곱셈연산의 반복적 발생 OutImg[i][j]= temp > 255 ? 255 : temp; // if 연산의 반복 발생 } } // 곱 연산, if연산의 횟수: height*width 번 unsigned char LUT[256]; // LUT로 사용할 메모리를 선언 // LUT값을 계산 for(i=0; i<256; i++) { int temp=(int)( i*1.4 ); LUT[i] = temp > 255 ? 255 : temp; } // LUT를 통하여 영상을 처리 for(i=0; i<height; i++) { for(j=0; j<width; j++) OutImg[i][j]=LUT[ InImg[i][j] ]; } // 곱 연산, if연산 횟수: 256번, 대입연산 width*height 번

룩업 테이블 연산 감마(γ) 상관관계에 의한 영상매크로 변환 - CRT 명암조절과 비슷한 비선형 변환 - 영상센서, 출력기 및 필름 등에서 사용함 - 0<γ<1 : 영상을 흐리게 만듬 - 1<γ : 영상을 밝게 만듬 - RGB모니터: 1.4<γ<2.8 Output = Input 1/γ #define GAMMA 2.0 #define transformation(x) pow((double)(x)/255.0,1/GAMMA); for(i=0; i<255; i++) LUT[i] = (unsigned char) transformation(i); for(i=0; i<height*width; i++) outImg[i] = LUT[ inImg[i] ];

룩업 테이블 연산

룩업 테이블 연산 인간 시각은 똑같은 밝기 변화에 대해 어두운 부분의 변화에 더 민감하게 반응함 인간 시각은 똑같은 밝기 변화에 대해 어두운 부분의 변화에 더 민감하게 반응함 그림 (d)는 어두운 부분에서의 밝기를 더 크게 바꾸어 주었으므로 가시화가 더 좋아지게 느낌

룩업 테이블 연산 명암대비변환: 명암이 스트레칭된 영상 명암 대비 압축변환: 명암대비가 압축된 영상

룩업 테이블 연산 8 레벨 포스트라이징(posterizing) 변환 3 레벨

룩업 테이블 연산 임계값이용 변환: 영상 이진화 임계값의 범위가 주어지는 임계값 변환: 특정범위 내에서만 이진화 임임계값계값 이용 변환: 영상 이진화 범위가 주어지는 임계값 변환: 특정범위 내에서만 이치화 임임계값계값 이용 변환: 영상 이진화 범위가 주어지는 임계값 변환: 특정범위 내에서만 이치화

상수값 더하기의 구현 2.픽셀단위의 산술연산 리소스 편집기로 이동하여 리소스 내의 IDR_WINTESTYPE 메뉴를 선택한다. 메뉴가 출력되면 추가할 공백 메뉴부분을 마우스로 두 번 클릭하자. 그림 5-7 <Workspace>에서 <ResourceView> 메뉴 아이템 대화상자에 아래 표와 같이 입력한다.

상수값 더하기의 구현 그림 5-9 클래스 마법사(ClassWizard)에서의 입력 <Add Function> 버튼을 클릭해 “OnConstAdd”라는 맴버함수를 추가한다. 추가된 함수를 편집하기 위해 다시 [그림 5-9]의 [Edit Code]버튼을 클릭하면 OnConstAdd( )함수로 이동한다. 이제 코드 입력을 시작하자 그림 5-10 멤버함수의 입력

1. 상수값 더하기의 구현 리스트 5-3 상수값 더하기 함수 그림 5-11 상수값 더하기 연산의 실행 예 리스트 5-3 상수값 더하기 함수 그림 5-11 상수값 더하기 연산의 실행 예 코드 입력이 끝났으면 컴파일하고 실행하다. [그림 5-11]은 실행의 예를 보여주고 있다. 입력영상에 상수값 60이 더해져 보다 밝아진 영상이 결과영상으로 출력되고 있다.

2. 상수값 빼기의 구현 리소스 편집기로 이동하여 메뉴리소스에 있는 [그림 5-11] 메뉴부의 빈 메뉴부분을 선택한다. 메뉴아이템 대화상자에 아래 표와 같이 입력한다. 그림 5-12 메뉴 편집 void CWinTestView::OnConstSub() { // TODO: Add your command handler code here CWinTestDoc* pDoc = GetDocument(); // 다큐멘트 클래스를 참조하기 위해 ASSERT_VALID(pDoc); // 인스턴스 주소를 가져옴   for(int i=0; i<height; i++) for(int j=0; j<width; j++) int tempVal = pDoc->m_InImg[i][j]-60; tempVal = tempVal < 0 ? 0: tempVal; pDoc->m_OutImg[i][j] = (unsigned char)tempVal; } Invalidate(FALSE); //화면 갱신 <Add Function>버튼을 클릭하여 “OnConstSub”라는 멤버함수를 추가한다. 함수를 추가하고 난후 <Edit Code>버튼을 클릭하면 OnConstSub( )함수로 이동한다. 이제 코드를 입력하자 리스트 5-4 상수값 빼기 함수의 구현

상수값 빼기의 구현 코드 입력이 끝났으면 실행한다. 입력영상에 상수값 60을 빼기 때문에 초기의 영상보다 더 어두운 영상이 결과영상으로 나타나게 된다. 그림 5-13 상수값 빼기 연산의 실행 예

3. 아이콘 버튼을 이용한 명령 입력 빼기연산을 실행하는 아이콘 버튼을 툴바에 추가해보자. 이 버튼을 클릭함으로써 매뉴를 선택한 경우와 동일하게 상수값 빼기연산이 수행된다. < Workspace>의 <Resource View>텝을 선택하여 리소스 편집기로 이동. <Workspace>의 <Toolbar>부분에서 [+]부분을 클릭한 후, <IDR_MAINFRAME>를 선택 툴바를 추가하기 위해 오른 쪽 편집부의 툴박스를 클릭하여 필요한 그림을 그린다. 동그란 원 하나를 그렸고 내부의 절반은 검은색으로 칠하였다. 색칠한 툴바 부분을 마우스로 클릭하면 다음의 대화창이 뜬다. 툴바를 연결할 서브메뉴의 ID를 상수값 빼기 함수의 ID인 <IDM_CONST_SUB>로 선택 그림 5-14 새로운 툴바의 추가 및 편집 그림 5-15 툴바의 서버메뉴의 ID연결

다시 컴파일하고 실행한다. 새롭게 추가된 툴바가 실행창에 나타난다. 영상을 하나 입력하여 읽어 들이고 추가된 툴바를 클릭해보자 다시 컴파일하고 실행한다. 새롭게 추가된 툴바가 실행창에 나타난다. 영상을 하나 입력하여 읽어 들이고 추가된 툴바를 클릭해보자. 입력영상에서 상수값을 빼기연산의 결과가 수행됨을 학인 할 수 있다. 그림 5-16 추가한 툴바에 의한 명령 실행

상수값 곱하기 구현 그림 5-17 상수값 곱하기 메뉴의 추가 <Add Function>버튼을 클릭하면 OnConstMu( )함수로 이동한다. 오른 편 리스트 5-5 상수값 곱하기 함수를 코드를 입력한다.

4. 상수값 곱하기 구현 코드 입력 후 컴파일하고 실행한다. 입력영상에 상수값 1.4를 곱하기 때문에 초기의 영상보다 전체적으로 더 밝아진 영상이 나타난다. 상수값 곱하기 연산의 실행 그림 5-18 상수값 곱하기 연산의 실행

5. 상수값 나누기 구현 상수 나눗셈 연산도 앞의 경우와 유사하게 메뉴와 함수를 만든 후 [리스트 5-6]의 함수를 작성하고 실행하면 된다. 코드 입력 후 컴파일하고 실행하면 입력영상에 상수값 1.4를 나누었기 때문에 초기의 영상보다 전체적으로 더 어두워진 영상이 나타난다. 리스트 5-6 상수값 나누기 연산의 구현 그림 5-19 상수값 나누기 연산의 실행

1. 두 프레임의 더하기 영상 구하기 그림 5-20 도큐멘트 클래스에 두 멤버 변수를 추가 도큐멘트 클래스에 이미지를 읽어들일 멤버 함수를 추가

두 프레임의 더하기 영상 구하기 TwoImg Load ( )함수에 다음 코드를 입력한다. 리스트 5-7 두개의 서로 다른 두 영상을 읽어 들이는 함수의 구현

두 프레임의 더하기 영상 구하기 그림 5-26 두 프레임 더하기 연산의 실행

두 프레임의 빼기 영상 구하기 두 프레임 더하기 연산의 실행 리스트 5-9 서로 다른 두 영상의 빼기 연산의 구현

두 프레임의 빼기 영상 구하기 그림 5-29 프레임 빼기 연산을 이용한 PCB의 결함 검사

3. 두 프레임의 곱 영상 구하기

두 프레임의 곱 영상 구하기 리스트 5-10 프레임 곱하기 함수의 구현 그림 5-30 두 프레임의 곱 연산의 실행

4. 영상의 고속변환을 위한 룩업테이블 연산구현

영상의 고속변환을 위한 룩업테이블 연산구현

연습문제 룩업 테이블을 이용하여 영상의 밝기나 색상에 변화를 줄 수가 있다. 이러한 방법을 포스트라이징이라고 한다. 다음은 계단식의 룩업 테이블을 이용하여 여러 레벨의 포스트라이징 변화를 보이는 그림이다.

연습문제 주어진 룩업테이블을 참고하여 8레벨의 포스트라이징을 구현하시오. 단, 룩업테이블을 나타내는 그림 (a)의 가로축은 입력 영상의 픽셀 밝기 값, 세로축은 출력 영상의 픽셀밝기 값이다..

연습문제 (2) 다음 p5-2(a)의 룩업테이블을 구현하여 0과 255의 두 가지 색상의 영상으로 만드시오. 또 그림 p5-2(b)의 룩업테이블을 구현하여 범위가 있는 이진화 영상으로 만드시오.

연습문제