본문 바로가기

반응형

전체 글

Image processing: Brightness Contrast 밝기 대비 ㅇ Brightness(밝기)와 Contrast조절 ㅇ 영상처리 기술들 중에서 간단하면서도 직관적인 것이 brightness와 contrast 조절입니다. - 우선 둘 중에 직관적으로 이해하기 쉬운 brightness부터 살펴 보겠습니다. ㅇ Brightness는 영상을 밝기를 뜻합니다. - 밝기를 조절하기 위해서는 픽셀의 intensity를 바꾸면 됩니다. - Intensity값을 증가시키면, 영상이 밝아집니다. - 반대로 감소시키면, 어두워집니다. ㅇ Contrast는 영상에서 밝은 부분과 어두운 부분의 차이를 의미합니다. - 방금 설명했던 brightness보다는 직관적으로 이해가 하기가 쉽지 않을 겁니다. - 예를 들어 보겠습니다. - 이미지 안의 대부분 픽셀들의 intensity가 비슷하다면, .. 더보기
CommandLineParser: 명령행 인수의 처리, Command line arguments ㅇ 명령행 인수 (Command line argument) - 예를 들어, 어떤 프로그램이 실행될 때 사용자가 파일 이름을 주면 - 그 파일을 열어 작업한다고 가정하자. - 이름을 넘겨주는 가장 쉬운 방법은 파일 이름을 소스코드에 하드코딩하는 것인데, - 단점은 이름을 바꿀 때 마다 프로그램 빌드를 다시 해야 하기 때문에 불편하다. - 더 쉬운 방법은 실행할 때마다 '인수 (argument)'로 주는 것이다. - 예를 들어 'text.exe'라는 프로그램이 있다고 하고, 실행할 때, 아래와 같이 입력하여 인수를 넘겨줄 수 있다. >> test.exe image1 image2 -help -N=10.0 - 위 명령어 라인을 하나하나 분석해 보면, - 실행파일 이름은 test.exe이고, - 여기에 인수로 i.. 더보기
Histogram Equalization의 원리 ㅇ Contrast Enhancement - 이미지에서 너무 밝은 부분이나, 어두운 부분은 자세한 내용을 보기가 어렵다. - 비슷한 intensity를 갖는 픽셀들이 한 곳에 모여있기 때문이다. . intensity란, 예를 들어, gray image에서 픽셀은 0(검정색)부터 255(흰색) 값을 갖는데, 이 값을 의미하는 것이다. . color image는 RGB, 3개의 채널을 갖는다면, 하나의 픽셀은 각 채널별로 intensity를 갖게 된다. . 여기서는 gray image만 생각하자. - 이를 개선하는 것을 contrast enhancement라고 한다. - 차이 또는 대조 (contrast)를 개선 (enhance)한다는 뜻으로, - 차이가 안 나던 픽셀들의 intensity를 바꿔서 차이가 .. 더보기
OpenCV normalize ㅇ OpenCV에서 제공하는 함수 중에 normalize( )가 있다. - 이 함수는 값들을 새로운 범위로 변환해주는 역할을 한다. - 예를 들어, 원래 값들이 1부터 10부터 사이에 있다면, - 이들을 0부터 1사이 값들로 변환한다. - 변환 값들은 원래 값에 비례한 크기를 갖게 된다. ㅇ 아래 프로그램은 원래 값들이 2 ~ 7일 때, 이를 1 ~ 10사이의 값으로 변환하는 예이다. - 1) 실수형 값 10개가 주어졌을 때 이를 Mat로 만든다. - 2) normalize함수의 인수로 입력값을 의미 - 3) 출력값을 의미 - 4) 변환방식이 NORM_MINMAX일 때, 변환 최소값 - 5) 변환 최대값 - 6) 변환 방식을 의미한다. ㅇ 함수 normalize에 의해 변환된 결과는 아래와 같다. - 변.. 더보기
파노라마, panorama by OpenCV 3.2 ㅇ OpenCV (3.2.0)을 이용한 파노라마 생성 - OpenCV에서는 여러 장의 사진을 합쳐서 하나의 파노라마 사진을 만들어내기 위한 - Stitcher 클래스를 제공한다. - 이 클래스는 사진을 하나로 합치는 옵션을 2개 제공하는데, - SCANS와 PANORAMA이다. ㅇ 다음 3장의 사진들이 주어졌을 때, ㅇSCANS 모드로 파노라마를 만들면, ㅇ PANORAMA 모드로 만들면, ㅇ C++ 구현 소스코드 #include #include #include #include int main() { // 파노라마를 구성하는 사진들을 읽어서 vector에 저장한다. vector imgs; // 3장의 이미지 이름들. sIMG_4939, ..., sIMG_4941 int img_start_num = 493.. 더보기
스몸비 (Smombie)를 위한 신호등 네덜란드의 한 회사가 횡단보도 바닥에 LED로 신호등을 표시하는 기술을 개발했다. 걸으면서 스마트폰 보는 사람들이 신호를 볼 수 있도록 더보기
이클립스 (Eclipse)에서 한글이 제대로 출력되지 않을 때 ㅇ 이클립스에서 콘솔창으로 출력을 하면 한글이 깨질 때가 있다. ㅇ 인코딩 설정이 제대로 되지 않았기 때문인데, ㅇ 이를 고치려면 다음과 같이 하면 된다. - 콘솔창 출력에서 한글이 깨지면 아래와 같이 나온다. - 프로젝트를 선택하고, - 오른쪽 마우스버튼을 클릭하고 - Run As / Run Configuration을 클릭 - 새로운 창 (Run configurations)이 열리면, - 맨 오른쪽 탭 (Common)을 선택하고, - Encoding 부분을 보면 한글과 맞지 않는 인코딩형식이 설정되어 있는 것을 볼 수 있다. - 보통 한글은 UTF-8 인코딩으로 설정한다. - 설정 완료후 출력을 확인하면, - 아래와 같이 한글이 제대로 출력된 것을 볼 수 있다. 더보기
2017년 배워볼만한 프로그래밍 언어 자료출처 더보기
Visual Studio 2017 설치와 C언어 예제프로그램 작성 ㅇ C언어 프로그래밍을 할 수 있는 환경 갖추기 - 1) Visual Studio 2017 설치 - 2) VS2017을 사용하여 간단한 프로그램 작성하여 실행하기 ㅇ 인터넷 브라우저에 다음 주소를 입력하여 다운로드 사이트로 이동 - www.visualstudio.com ㅇ Visual studio 2017 RC (Release Candidate) 버전을 다운로드 - 아래 그림의 "무료 다운로드"를 클릭 - ㅇVisual Studio (짧게 줄여서 VS) 2017도 여러 가지 버전이 있는데 - 이 중에서 Visual Studio Community 2017 RC 버전을 다운로드 - 학생 교육용으로 사용되는 간단한 버전 - 나머지 Professional과 Enterprise버전은 상용 개발에 사용하고, 다른 .. 더보기
OpenCV Mat 이미지 형식 출력하기 Mat 클래스에 저장된 이미지의 타입을 출력하는 utility함수는 다음과 같다. The following is a utility function you can use to identify the types of OpenCV matrices at run-time. void showType(Mat &m) { string r; int type = m.type(); uchar depth = type & CV_MAT_DEPTH_MASK; uchar chans = 1 + (type >> CV_CN_SHIFT); switch (depth) { case CV_8U: r = "8U"; break; case CV_8S: r = "8S"; break; case CV_16U: r = "16U"; break; case CV_.. 더보기
Huffman coding의 테스트 파일 위 파일을 이용해서 Huffman coding 프로그램의 동작을 테스트합니다. 더보기
태양광 비행기, 세계 횡단 태양광 비행기 태양광으로 충전하면서 일본에서 하와이까지 7,211 km를 날다.시속 60km로 117시간 52분 (약 5일)동안 날아간 비행기.2016.6.28 ~ 2016.7.3 낮에는 10km 상공에서 태양광 충전, 밤에는 2km 상공에서 비행비행기는 무게 2톤, 조종사는 1명.냉장고만한 공간에서 설 수도 없고, 용변도 그자리에서 해결요가, 명상, 호흡법을 훈련하여 좁은 공간에서도 견딜 수 있도록 대비 5일 비행 끝 착륙 몇 시간 전부터,조종사는 지루한 비행이 끝나는 것보다,10년간 준비한 비행의 마지막 시간을 즐겼다고.. 지구 한 바퀴를 도는 것이 목적.지난 4월 아랍에미레이트의 아부다비에서 출발 2016년 7월 현재, 하와이에서 미국 애리조나주로 비행을 준비중 이미지출처: solar impulse 더보기
Connected Component Analysis Connected Component Analysis 이미지 안의 물체를 찾아내어 분석하기 위한 목적으로 thresholding에 기반한 이진화 기술들이 개발되었으며, 이진화 결과에서 노이즈를 제거하고, 결과들을 보다 정교화하기 위해서 mathematical morphology 기술들이 개발되었다. Morphology까지 거친 이미지들을 이용하면 물체를 구분 (segmention)하고, 물체를 인식 (object recognition)할 수 있는데, 그 전에 픽셀들을 물체 단위로 구분하여야 한다. Connectedness 하나의 물체를 구성하는 픽셀들은 이미지에서 서로 연결된 형태로 나타나게 되는데, 픽셀들이 연결되었는지를 판단하는 방법에는 2가지가 있다. 하나는 4-adjacency인데, 이것은 픽셀의 .. 더보기
Mathematical morphology (모폴로지 연산) Mathematical morphology (모폴로지)​Thresholding에 의해 얻어진 binary image를 좀 더 가공하여 완성도를 높이기 위해서는 morphology를 이용한다. 가공의 의미는 noise나 너무 작은 feature들을 제거하는 것을 의미한다. Morphology는 structuring element (SE)라는 것을 이용하는데, 이것은 마치 bit mask와 같은 것이다. Bit-mask가 1차원인데 반해, SE는 2차원이다. SE를 이미지 위에 슬라이딩 시켜가면서 logical operation을 수행하여 결과 이미지를 만든다. original image는 변하지 않고, 새로운 이미지가 만들어진다. 이 분야는 독자적인 학회를 가지고 있을 정도로 이론적으로 정립되어 있다. S.. 더보기
OJ 1194 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76#include #include #include #include int main(void) { int alphacount[26] = { 0 }; int momax = -1000000; int jamax = -1000000; int moumindex = -1; int jaumindex = -1; int n; char a[1.. 더보기

반응형