1. 자바 기반 이미지 프로세싱
1. 개요
2. 구성도
3. 목표
4. 흑백
5. 선명도
6. 회전
7. 데모
2. 개요
컴퓨터를 이용하여 생성된 영상자료 (이미지 또는 동영상 등)를 목적에 맞게
처리하는 일련의 과정
영상의 화질을 개선 하거나, 영상을 기하학적으로 변환하거나 영상의 특징
을 두드러지게 변화 시키거나, 압축하는 작업을 포함
방송, 영화, 의료, 산업현장, 사진편집, 출판 등 광범위한 분야에서 활용
3. 구성도
PC (Swing/AWT) Mobile (Android) WEB (JSP/Servlet)
서버 (APM)
JSON POST
camera
Image Processing
Android bitmap API
4. 목표
1. 자바언어에 대한 이해
2. 모바일 플랫폼(Android)에 대한 이해
3. 이미지 프로세싱에 대한 이해
5. 흑백 이미지 (Grayscale)
L = 0.2126 R + 0.7152 G + 0.0722 B
Convert(“L”) 함수는 R,G,B 세개의 성분을 한 개의 광도(Luma) 성분으로 합성한다.
이 계수들은 우리 눈이 느끼는 빨강, 파랑, 초록 삼원색의 밝기를 상대적 차이를 바탕으로 채택한 값
RGB의 3원색을 흑백으로 변환한 결과
6. //그레이스케일
public static Bitmap doGreyscale(Bitmap src) {
// constant factors
final double GS_RED = 0.299;
final double GS_GREEN = 0.587;
final double GS_BLUE = 0.114;
// create output bitmap
Bitmap bmOut = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
// pixel information
int A, R, G, B;
int pixel;
// get image size
int width = src.getWidth();
int height = src.getHeight();
// scan through every single pixel
for(int x = 0; x < width; ++x) {
for(int y = 0; y < height; ++y) {
// get one pixel color
pixel = src.getPixel(x, y);
// retrieve color of all channels
A = Color.alpha(pixel);
R = Color.red(pixel);
G = Color.green(pixel);
B = Color.blue(pixel);
// take conversion up to one single value
R = G = B = (int)(GS_RED * R + GS_GREEN * G + GS_BLUE * B);
// set new pixel color to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
// return final image
return bmOut;
}
7. 선명도 (Sharpening)
0 -1 0 -1 -1 -1
-1 5 -1 -1 9 -1
0 -1 0 -1 -1 -1
마스크1 마스크2
영상을 선명하게 하는 마스크는 -1과 5, 9와 같은 0~1을 벗어난 값을
사용한다는 것에 주목하자. 이렇게 되면 주변 픽셀보다 밝은 픽셀은
더 밝아지게 되고, 주변 픽셀보다 어두운 픽셀은 더 어두워지게 되어
서 픽셀들 사이의 명암도 차이가 두드러지고, 결과적으로 선명한 이미
지가 얻어진다.