Introduction
1 cafe.daum.net/RobotVision
1.1 Background
2 cafe.daum.net/RobotVision
1.2 What Is Digital Image Processing?
3 cafe.daum.net/RobotVision
1.3 Background on MATLAB and the Image Processing Toolbox
cafe.daum.net/RobotVision 4
1.4 Areas of Image Processing Covered in the Book
cafe.daum.net/RobotVision 5
1.5 The Book Web Site
• www.ImageProcessingPlace.com
• Availability of M-files, including executable versions of all M-files in the book
• Tutorials
• Projects
• Teaching materials
• Links to databases, including all images in the book
• Book updates
• Background publications
cafe.daum.net/RobotVision 6
1.6 Notation
cafe.daum.net/RobotVision 7
1.7 Fundamentals
cafe.daum.net/RobotVision 8
1.7.1 The MATLAB Desktop
• the main working environment
• Fig. 1.1: (in the default configuration)
• Desktop components:
1. Command Window, 2. Workspace Browser,
• Workspace = The set of variables created in a session
3. Current Directory Browser / Field, 4. Command History Window
5. Figure Window
cafe.daum.net/RobotVision 9
search path
• used to find M-files and other MATLAB-related files
• Any file run in MATLAB must reside in the Current Directory or in a directory that is on the search path.
cafe.daum.net/RobotVision 11
clear & clc
• Typing clear at the prompt removes all variables from the workspace.
– This frees up system memory.
• Typing clc clears the contents of the command window.
• See the help page for other uses and syntax forms.
cafe.daum.net/RobotVision 12
1.7.2 Using the MATLAB Editor/Debugger
• .m M-files
cafe.daum.net/RobotVision 13
• 편집기 열기:
①
② >> edit
③ >> edit filename 편집 윈도우에 M- 파일 filename.m 이 열림.
– Remember: 이 파일은 현재 디렉터리 또는 탐색 경로의 디렉터리에 있어야! (Otherwise, 새 파일 생성)
1.7.3 Getting Help
• 온라인 도움말: MATLAB 도움말(Help) 브 라우저 (분리된 윈도우) 사용
1. 데스크탑 툴바 의 물음표 기호(?)를 클릭 2. or 명령 윈도우에서
>> helpbrowser
3. or Help 메뉴 > MATLAB Help
cafe.daum.net/RobotVision 15
도움말
도움말 브라우저 브라우저
• 특정 함수에 대한 도움말 얻는 다른 방법:
>> doc 함수_이름 – 예:
>> doc format
도움말 브라우저의 표시 틀에 format 이란 함수에 대한 설명(그림 )
– 브라우저가 미리 열려있지 않으면 열어줌.
1.7.4 Saving and Retrieving Work Session Data
• saving or loading an entire work session
(the contents of the Workspace Browser) or selected workspace variables
• 전체 작업 세션 or 선택된 작업공간 변수들을 저장
& 불러오는 방법:
1) 작업공간 브라우저 윈도우의 빈 공간을 우측 클릭 단 축 메뉴
2) Save Workspace As 를 선택 디렉터리 윈도우 (그림
→)
OR
File | Save Workspace As… (v. 7 이상)
3) 파일 이름을 적고, 저장 장소인 폴더를 선택 4) Save를 클릭
cafe.daum.net/RobotVision 18
• 작업공간으로부터 선택된 변수 저장하기:
1.좌측 클릭으로 변수 선택
2.강조된 영역에서 우측 클릭 단축 메뉴 3.Save Selection As 선택 윈도우
4.변수를 저장할 폴더를 선택
• 여러 개의 변수 저장하기: (쉬프트-클릭 또는 컨트롤-클릭)
• 확장자 = .mat( MAT-파일 )
• double-precision; 이진 포맷으로 저장
• 예:
① my_work_2012_03_10 이라고 이름 붙인 세 션은, 저장되면 my_work_2012_03_10.mat
② final_image라고 부르는 저장된 영상(작업공 간의 단일 변수)은, final_image.mat
• 저장된 작업공간 or 변수 불러오기:
1) 작업공간 브라우저 윈도우의 툴바에 있는 Load Data File… 아이콘을 클릭
원하는 MAT-파일들이 들어있는 폴더를 선택할 수 있 는 [열기](→)
2) 선택된 MAT-파일을 더블-클릭 or 열기 버튼을 선택 [Import Wizard] (→)
3) [Finish] 버튼 Workspace에 변수 이름들 나타남. (→)
• 파일 이름과 경로 정보가 있으면 프롬프트 에서 save나 load 명령 사용
– 불편. But 메뉴 방식에 없는 포맷이 요구되는 경우에 사용
• HW: Reading
– MATLAB 실행
– 구성 요소 익히기 – 도움말 사용 방법
1.7.5 Digital Image Representation
• 영상: 2 차원 함수 f(x, y)로 정의
– x, y: 공간 (평면) 좌표 – f(x, y):
• 좌표 (x, y)에서의 f의 진폭(amplitude, 또는 크기)
• = 그 점에서의 밝기(intensity, 또는 명암도)
◦ 흑백 영상의 밝기 = 그레이 레벨
◦ 그레이 =
cafe.daum.net/RobotVision 25
• 적, 녹, 청 의 세 개의 개별적 성분의 영상들 로 구성 (RGB 칼라 시스템 경우)()
– 개별 2-D 영상을 결합해서 형성
( 세 영상 성분들을 개별적으로 처리하므로써, 흑백 영상을 위해 개발된 기법들을 칼라 영상들에 대해 확장 가능 (칼라 영상처리 -- CH 6))
칼라 영상
칼라 영상 표시
RGB 큐브에서 R 축에 수직인 단면을 상상
디지털 영상
= 좌표 & 진폭 을 디지털화 x, y, f의 진폭 값들이 모두 유한하고, 이산적 인 영상
• 좌표 값 디지털화 = 샘플링
크기 값 디지털화 = 양자화 ( quantization )
Coordinate Conventions
• 영상 f(x, y) 를 샘플링한 결과 영상이 M 개 의 행과 N 개의 열을 갖는다면,
영상의 크기 = M N
• 좌표 ( x, y )의 값: 정수 값( 불연속적 ) 사용.
• 보통, 영상의 원점 은 (x, y) = (0, 0)으로 정 의
If (x, y) = (0, 1), 첫 행을 따라 두 번째 샘플 – 그림 2.1(a):
• x = 0 ~ M – 1, y = 0 ~ N – 1 범위의 정수 값
좌표 관례 좌표 관례
IPT 좌표 관례
• 그림 2.1(b): 1 부터 시작
• 둘의 차이점:
1. (x, y)를 사용하는 대신에, 행과 열을 의미하 기 위해 (r, c)를 사용
2. 좌표 체계의 원점: (r, c) = (1, 1)
r, c: 각각 1 ~ M, 1 ~ N 범위의 정수 값
IPT의 화소 좌표 & 공간 좌표
• 화소 좌표 ( pixel coordinates ): 그림 2.1(b)
– 1st 좌표 = 행 – 2nd 좌표 = 열
• 공간 좌표: (이 책에서는 사용 안함)
– x는 열, y는 행 – 빈도 낮음
• 이 책에서는 IPT의 화소 좌표 사용
매트릭스로서의 영상
(skip)
• f(x, y) =
– 주의: Italic 체
– MATLAB matrix: (→)
• 배열의 각 요소 = 영상 요소 ( image element ), 화소 ( picture element ), 픽슬 ( pixel ), 또는 pel
) 1 ,
1 (
...
) 1 , 1 (
) 0 , 1 (
) 1 ,
1 ( ...
) 1 , 1 ( )
0 , 1 (
) 1 ,
0 ( ...
) 1 , 0 ( )
0 , 0 (
N M
f M
f M
f
N f
f f
N f
f f
MATLAB 매트릭스로 표현한 디지털 영상
• f(r, c) =
• f(1, 1) = f(0, 0)
• f(r, c): 행 = r, 열 = c에 위치
– 예: f(6, 2) -- 매트릭스 f의 6th 행과 2nd 열
M, N: 매트릭스의 행 수, 열 수
) ,
( f ...
) 2 , (
f )
1 , (
f
) ,
2 ( f ...
) 2 , 2 ( f )
1 , 2 ( f
) ,
1 ( f ...
) 2 , 1 ( f )
1 , 1 ( f
N M
M M
N N
1.7.6 Image I/O and Display
• 함수 imread -- MATLAB 환경으로 영상 을 읽어들임:
imread(‘filename’)
– filename: 영상 파일의 이름 (확장자 포함) – 注意: single 따옴표() 사용
Reading Images Reading Images
• 예:
>> f = imread(‘chestxray.jpg’);
Then, 변수 f chestxray.jpg
– 명령 줄 끝 세미콜론: 출력 억제 (注意!)
• w/o ‘;’, 그 줄의 연산 결과를 표시
– 프롬프트 기호(>>): 명령 줄의 시작 표시
• filename에 경로 정보가 없을 경우 검색 순서:
1) 현재 디렉터리 (§1.7.1)
2) MATLAB 탐색 경로 (§1.7.1)
• 특정 디렉터리로부터 영상 읽는 방법: 전체 경로 or 현재 디렉터리 기준 상대경로를 포함
– 예:
>> f = imread(‘D:\myimages\chestxray.jpg’);
>> f = imread(‘.\myimages\chestxray.jpg’);
경로
• MATLAB 데스크탑 툴바의 현재 디렉터리 필드(CDF):
MATLAB의 현재 작업 디렉터리를 표시하고 간단한 수동 변경 방법 제공 ()
Version 7.0.1에서의 영상 읽기
원하는 folder 찾기:
1) CDF 옆 ‘Browse for folder’ icon을 click
2) 찾는 영상이 있는 folder를 찾기
3) Current Directory tab()을 선택; 원하 는 영상 file을 right- click
4) 단축 메뉴에서
‘Open’을 click
[Import Wizard]
5) ‘Finish’
6) workspace 탭 선 택
1) 영상 file 불러오기:
f=imread('Fig0203(a)(chest-xray).tif');
• 注意: 현재 디렉토리 또는 탐색경로에 등록되어 있어 야!
– 또는 앞 절 슬라이드(pp. ?-?)에 소개된 방법 사 용
영상 표시하기 영상 표시하기
• 주의: 노이즈 제거된 영상을 사용할 것.
2) 함수 imshow로 영상 표시
imshow(f)
• 만일 다른 영상 g를 imshow에 의해 불러오면, MATLAB은 새 영상으로 교체해서 표시해버림.
• 첫 번째 영상을 유지하고 두 번째 영상을 출력하 려면, 함수 figure 사용:
>> figure, imshow(g)
>> imshow(f), figure, imshow(g)
>> imshow(f); figure; imshow(g)
– 쉼표 or 세미콜론 여러 명령 in one line 가능 – figure(n): n = 그림 창 번호
함수 figure
imwrite(f, ‘filename’)
– filename의 확장자는 3rd 인자로서 명기 가능
– 예: TIFF 파일 형식
>> imwrite(f, ‘patient10_run1’, ‘tif’)
• 경로 정보가 없으면, 현재 작업 디렉터리 에 저장.
영상
영상 저장하기 저장하기 영상
영상 저장하기 저장하기
• JPEG 영상用 더 일반적인 imwrite 문법:
imwrite(f, ‘filename.jpg’, ‘quality’, q) – q: 0 ~ 100 사이의 정수
• 작을수록 압축에 의한 劣化
– PhotoShop에서는 0 ~ 12.
1.7.7 Classes and Image Types
• 표 1.1(): MATLAB과 IPT가 지원하는 화 소 값 데이타 클래스 목록
① 수치(numeric) 데이타 클래스: 1 ~ 8th
② char 클래스: 9th
③ 논리 데이타 클래스: 10th
cafe.daum.net/RobotVision 48
cafe.daum.net/RobotVision 49
• 데이타 클래스별 바이트 수:
– double = 8
– logical, uint8, int8 = 1 – uint16, int16 = 2
– uint32, int32, single = 4
cafe.daum.net/RobotVision 50
• 툴박스 가 지원하는 영상 유형:
1. 그레이 스케일(또는 밝기) 영상 2. 이진 영상
3. 인덱스(indexed) 영상 CH 6 4. RGB 영상 CH 6
영상 유형 영상 유형
(1) 그레이 스케일 영상
= 그 값들이 밝기를 나타내기 위해 스케일 링된 데이타 매트릭스
• If 요소 클래스
== uint8, then [0, 255]
== uint16, then [0, 65535] 의 정수 값
• 클래스 double 형이면, 浮動소수점數 값
– 스케일링된 클래스 double 형 값 ~ [0, 1]
(2) 이진 영상
= 0과 1로 구성된 논리 논리 (( logical logical ) ) 배열 배열
• 값들이 수치 데이타 클래스 형 (예: uint8)의 0과 1로 구성된 배열은 이진 영상 x x in
MATLAB.
• 함수
logical: 수치 배열 논리 배열
– A ~ 0 & 1의 수치(예: uint8) 배열일 때,
B = logical(A) B ~ 논리 배열
• If ∃ aij 0, 1, then
logical(A):
a
ij~= 0 논리 1 a
ij== 0 논리 0
• 관계 연산자 와 논리 연산자 (cf. §2.10.2)도 논리 배열을 만듦.
• 함수
islogical: 논리 배열 여부 확인
islogical(C)
– If C ~ 논리 배열, 1을 반환, else 0을 반환.
• 논리 배열 수치 배열 방법:
B = class_name(A)
where class_name is im2uint8 , im2uint16 ,
im2double , im2single , or mat2gray .
• Toolbox function mat2gray converts an
image to an array of class double scaled to the range [0, 1]:
g = mat2gray(A, [Amin, Amax])
cafe.daum.net/RobotVision 55