본문 바로가기
반응형

Open CV19

[OPENCV-C++ ] sigma를 활용한 gaussian filter #pragma once #include "ISP.h" int main() { std::string fileName = "../thirdparty/opencv_480/sources/samples/data/lena.jpg"; cv::Mat src_gray = cv::imread(fileName, cv::ImreadModes::IMREAD_GRAYSCALE); cv::Mat src_gray_gaussian = src_gray.clone(); src_gray_gaussian = 0; const float PI = 3.14159265; float sigma = 0.4; float gaussian[25] = {0,};//mask의 영역 별 곱해줄 값들 int filter_sz = 5; int half_kernelS.. 2023. 11. 26.
[OPENCV-C++ ] sobel filter(HPF) *소벨 필터 1차 미분치 값 계산 후 이를 임계치와 비교 수평과 수직 축으로 미분치 계산 #pragma once #include "ISP.h" int main() { std::string fileName = "../thirdparty/opencv_480/sources/samples/data/lena.jpg"; cv::Mat src_gray = cv::imread(fileName, cv::ImreadModes::IMREAD_GRAYSCALE); Mat soble_x = Mat::zeros(src_gray.size(), CV_8UC1); Mat soble_y = Mat::zeros(src_gray.size(), CV_8UC1); Mat sobel_edge = Mat::zeros(src_gray.size(),.. 2023. 11. 26.
[OPENCV-C++ ] 손실된 데이터 복원하기(보간법(Interpolation) 활용) 보간법: InterPolation / 외부 보간법: OuterPolation 알고 있는 두 점 사이의 모르는 값을 추측할 때 사용하는 방법으로 해당 점끼리는 선형적인 관계가 있을 거라고 생각하고 접근하는 방법 #pragma once #include "ISP.h" int main() { std::string fileName = "../thirdparty/opencv_480/sources/samples/data/lena_gray.jpg"; cv::Mat src_gray_original = cv::imread(fileName, cv::ImreadModes::IMREAD_GRAYSCALE); cv::Mat src_gray = cv::imread(fileName, cv::ImreadModes::IMREAD_GRA.. 2023. 11. 26.
[OPENCV-C++ ] blurring //08.ISP_Filter_1.cpp #pragma once #include "ISP.h" int main() { int datas[] = { 6,4,8,9,4,4,8,64,4,6,4,8,6,4,11,1,3,1134,5,64,5,64 }; //노이즈가 없는 대표 신호 값을 정하시오. //4, 6, 8 int size = sizeof(datas) / sizeof(datas[0]); std::sort(datas, datas + size); std::vector vDatas(datas, datas + size); std::sort(vDatas.begin(), vDatas.end()); int major = datas[size / 2]; int major_v = vDatas[size / 2]; std::str.. 2023. 11. 26.
[OPENCV-C++ ] gamma correction 입력 신호 r, 감마보정 값 γ, 출력 신호 s 만약 어두운 걸(0.2에 해당하는 정보정도) 밝게 하고 싶다면 gamma=1에서 0.4로 바꾸면 출력이 0.55정도로 늘어나게됨. 밝고 어두운 정보를 조절함에 있어 포화가 되지 않는 것이 장점(0.3정도의 감마값까지 그 이하는 빡셈) 여기까지가 이론이고 //ISP.h #pragma once #include "Common.h" class ISP { public: ISP(); ~ISP(); bool Convert_BGR2GRAY( uchar* pBGR,//color channel, input int cols,//cols, input int rows,//rows, input uchar* pGray//mono channel, output ); bool Get_Hi.. 2023. 11. 25.
[OPENCV-C++ ] histogram equalization histogram equalization = • 영상을 다양한 응용분야에 적합한 형태로 개선하는 것(전처리 과정) 특정 영역의 대비(contrast)를 강하게 하거나, 영상의 전체적인 명암의 조절, 혹은, 특정 주파수 대역을 제거하는 방법 등 영상의 해석을 용이하게 하거나, 영상 내 특정 정보를 인지 가능하도록 함 열화(노이즈) 발생 시 원본 영상 복원 Q. 밝은 사진과 어두운 사진 중 대조를 해줄 때 더 효과적인 것은? *히스토그램 평활화 과정(smoothing) 1.히스토그램을 생성하고 2.정규화하고 3.정규화된 히스토그램의 누적분포함수를 이용해서 대응 화소값을 생성해준다. 그 후 4.영상의 각 화소 값들을 대응되는 픽셀로 매핑시켜준다. 평활화 이후에 확률밀도함수는 선형적으로 바뀌게 됨. 여기까지가 .. 2023. 11. 7.
[OPENCV-C++ ] 영상인식에서 사용하는 색상 모델 *영상의 정의 요즘 인터넷 또는 일상 대화에서 '영상'이라는 용어가 대체로 동영상을 의미하는 용도로 사용되고 있음. 그러나 컴퓨터 비전 또는 영상 처리 분야에서 '영상'이란 움직임이 없는 정지영상을 의미함. 즉 영단어 image는 영상이라고 번역하여 사용하고, 영단어 video또는 motion picture는 비디오 또는 동영상으로 번역해서 사용함. 그러므로 '영상'이라 표현하는 것은 움직이는 동영상이 아니라 "비칠 영"에 "형상 상"자를 쓴 정지 영상임 1. gray scale(mono) : 8bit 1채널로 0~255까지의 값으로 픽셀을 표현하고 여러 픽셀들이 모여 하나의 영상이 됨. 2. RGB : 8bit 3채널로 Red,Green,Blue 값들에 대해 각각 0~255값을 가지며 이 세 값이 모여.. 2023. 11. 6.
[OPENCV-C++ ] HSV threshold 활용해서 원하는 부분만 추출하기 코드 #pragma once #include "Common.h" //https://docs.opencv.org/3.4/da/d97/tutorial_threshold_inRange.html using namespace cv; const int max_value_H = 360 / 2; const int max_value = 255; int low_H = 0, low_S = 0, low_V = 0; int high_H = max_value_H, high_S = max_value, high_V = max_value; /*//opencv library cvt 코드(BGR->HSV) //HSV struct typedef struct { double h; // Hue (색조) [0, 360] double s; // .. 2023. 11. 6.
반응형