본문 바로가기

전체 글227

컨볼루션 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.
반응형