opencv

개발/OpenCV

OpenCV 특징추출을위한 전처리단계

안녕하세요 여러분 오늘은 영상에서 특징을 추출하기 위한 전처리 단계에 대해서 포스팅하고자합니다. 1. 명암도 영상 변환 · 영상의 곱셈과 나눗셈을 통해 영상의 명암을 조절함. - (결과 영상) = { (입력 영상) - (밝기조절 상수) } * (명암조절 상수) · 1보다 큰 명암 조절 상수를 곱했을 때 영상의 모든 픽셀의 값이 증가해 영상 전체의 밝기가 과도하게 증가하는 것을 보정하기 위해 명암조절 상수를 곱하기 전에 밝기조절 상수를 빼는 연산을 수행함. · alpha 상수는 1.1, beta 상수는 50을 적용해 영상의 명암을 밝게 변경함. · 해당 코드의 실행 결과는 아래 그림2와 같음. 2. 가우시안 블러링 · 가우시안 블러는 가우시안 분포를 영상처리에 적용한 것으로 정규분포·확률분포에 의해 생성된..

개발/OpenCV

Edge Detection 코드/결과

안녕하세요 여러분 이번 포스팅에서는 저번 포스팅에서 작성했던 윤곽선 검출에 대한 실제 작동 코드와 결과를 보도록 하겠습니다. 윤곽선 검출의 이론에 대해 읽고 싶으시다면 아래 링크에서 읽어보세요! 2018/04/11 - [OpenCV] - Edge Detection의 방법 소개 1. 로버츠 마스크(Roberts Mask) void RobertsEdgeDetect(const Mat& image, Mat& result, uchar thresh){ // 수직마스크 Mat maskX = (Mat_(3, 3)

개발/OpenCV

Edge Detection의 방법 소개

안녕하세요 여러분 이번 포스팅에서는 OpenCV를 활용한 Edge Detection, 즉 윤곽선 검출 방법들에 대해 이론적인 설명을 해보려고 합니다! 먼저 윤곽선을 검출하기 위해서는 회선의 개념을 이해해야 합니다 회선의 정의를 살펴보겠습니다. 회선이란, 화소값 각각에 대해 여러가지 연산을 수행하는 화소 기반 처리가 아닌 마스크라 불리는 규정된 영역을 기반으로 연산을 수행하는 것을 공간영역 기반 처리 또는 마스크 기반 처리라고도 한다. 마스크 기반 처리는 마스크 내의 원소값과 공간 영역에 있는 입력 영상의 화소값들을 대응되게 곱하여 출력화소값을 계산한다. 이러한 처리를 모든 입력 화소값에 대해 이동하면서 수행하는 것을 회선이라고 한다. 이 때 입력 영상에 곱해지는 이 마스크를 커널, 윈도우, 필터 등이라고..

개발/OpenCV

Canny Edge Detection

#include #include #include using namespace cv; int main() { IplImage *inputImg = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE); IplImage *edgeDetection1 = cvCreateImage(cvGetSize(inputImg), IPL_DEPTH_8U, 1); IplImage *edgeDetection2 = cvCreateImage(cvGetSize(inputImg), IPL_DEPTH_8U, 1); IplImage *edgeDetection3 = cvCreateImage(cvGetSize(inputImg), IPL_DEPTH_8U, 1); cvNamedWindow("InputImage",..

개발/OpenCV

opencv 샤프닝(Sharpening)

#include #include #include using namespace cv; int main() { Mat inputImg, resultImg; inputImg = imread("city.jpg", IMREAD_COLOR); CV_Assert(inputImg.depth() == CV_8U); resultImg.create(inputImg.size(), inputImg.type()); const int nChannels = inputImg.channels(); for (int j = 1; j < inputImg.rows - 1; ++j) { const uchar* prev = inputImg.ptr(j - 1); const uchar* curr = inputImg.ptr(j ); const ucha..

개발/OpenCV

가우시안 노이즈 + 가우시안 필터

#include #include using namespace cv; int main() { cvNamedWindow("Origin", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter3", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter5", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter7", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter9", CV_WINDOW_AUTOSIZE); Mat inputImg; Mat filter3Img; Mat filter5Img; Mat filter7Img; Mat filter9Img; inputImg = imread("cat.png", CV_LOAD_IMA..

개발/OpenCV

가우시안 필터(블러) Gaussian Filter(Blur)

#include #include using namespace cv; int main() { cvNamedWindow("Origin", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter3", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter5", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter7", CV_WINDOW_AUTOSIZE); cvNamedWindow("Filter9", CV_WINDOW_AUTOSIZE); Mat inputImg; Mat filter3Img; Mat filter5Img; Mat filter7Img; Mat filter9Img; inputImg = imread("cat.png", CV_LOAD_IMA..

개발/OpenCV

가우시안 노이즈(Gaussian Noise)

#include #include using namespace cv; int main() { Mat inputImg; inputImg = imread("cat.png", CV_LOAD_IMAGE_COLOR); resize(inputImg, inputImg, Size(), 0.3, 0.3, CV_INTER_AREA); Mat noise_image(inputImg.size(), CV_16SC3); double average = 0.0; double std = 30.0; randn(noise_image, Scalar::all(average), Scalar::all(std)); Mat temp_image; inputImg.convertTo(temp_image, CV_16SC3); addWeighted(temp_i..

njsung
'opencv' 태그의 글 목록