본문 바로가기

IT/OpenCV15

컨볼루션 convolution(회선) 필터링 기본 컨볼루션(convolution) 필터링에 기본 개념이나 공식은 인터넷을 찾아보면 많이 나와있다. 행렬을 만들어서 필터링 되는 기본적인 과정을 보려고 한다. 먼저 3x3평균 필터링 결과이다. pMatA 행렬(6x6)에다가 3x3행렬 W=[1/9 1/9 1/9; 1/9 1/9 1/9 ; 1/9 1/9 1/9 ] W 행렬을 평균 필터링 한 결과pMatB 행렬이 나왔다. = w 행렬이 = pMatA 를 지나가는데 w의 중심점 2행,2열을 w(0, 0) 라고 하면w(-1, -1) w(0, -1) w(1, -1)w(-1, 0) w(0, 0) w(1, 0)w(-1, 1) w(0, 1) w(1, 1) 과 같이 위치가 정해진다. pMatA에서 (0, 0) 자리에서 시작해서 평균화 시켜 가는 것이다. 빨간 화살표 방향으로.. 2014. 12. 19.
OpenCV 함수 정리 IplImage 구조체 멤버명 ● nChannels : 영상의 픽셀 당 채널 수를 나타내며 1~4 값이며 흑배영상의 채널의 수는 1이고 RGB 컬러영상의 채널의 수는 3이고 RGB 컬러순서는 다음과 같다. b0g0r0b1g1r1b2g2r2b3g3r3……… ● origin : 영상의 원점을 나타낸다. 0은 top-left origin, 1은 bottom-left origin을 의미한다. 다음은 Opencv에서 origin이 나타내는 상수이다. origin설명IPL_ORIGIN_TL (0)TL은 Top Left의 약자이며 왼쪽 상단을 나타낸다.IPL_ORIGIN_BL (1)BL은 Bottom Left의 약자이며 왼쪽 하단을 나타낸다. ● depth : 영상데이터를 저장하기위해 사용되는 비트의 수를 나타.. 2014. 12. 19.
반전영상 화소값을 이용해서 뺄셈 계산으로 반전 영상 만들기 8비트 영상에서 최대값이 255이므로 s=255-r로 반전 영상을 계산할 수 있다. #include "cv.h"#include "highgui.h"int main(){ IplImage *srcImage; if((srcImage = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE)) == NULL) return -1; IplImage *dstImage; dstImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1); int x, y; double r, s; for(y=0; yheight; y++) { for(x=0; xwidth; x++) { r = cvGetReal2D.. 2014. 12. 19.
cvLUT를 사용한 반전영상 void cvLUT(const CvArr* src, CvArr* dst, const CvArr* lut); 함수를 사용해서 반전 행렬을 만들 수 있는데 이를 이용해서 이미지의 행렬을 구한 후 그 행렬을 반전하면반전된 이미지를 구할 수 있다. #include #include "cv.h"#include "highgui.h"void PrintMat(const CvMat *mat, const char *strName);int main(){ IplImage *srcImage; if( (srcImage=cvLoadImage("lena.jpg",CV_LOAD_IMAGE_COLOR))== NULL ) return -1; CvMat matHeader, *pSrcMat; pSrcMat = cvGetMat(srcImage,.. 2014. 12. 19.
반응형