6. OpenCV da tasvir o‘zgartirishlar
O‘rama (Svyortka):
“O‘rama” usulida ma’lum bir xajmdagi (masalan, 3×3 o‘lchamli yadro) oyna ichida qiymatlar tasvirga moslanadi va tasvirdagi mos koordinatalardagi qiymatlar oynadagi mos qiymatlar bilan ko‘paytiriladi va ularning yig‘indisi yig‘iladi. Yig‘indi natija tasvirning ishchi oyna markaziga qo‘yiladi. Buni formula ko‘rinishida quyidagicha ifodalash mumkin.
.
OpenCVda bunday filtrlashni quyidagi protsedura yordamida amalga oshiriladi:
void cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel,
CvPoint anchor = cvPoint(-1,-1) );
Bu erda kernel (yadro) ga oldindan mavjud ishchi oynalarni (masalan, Sobel ishchi yadrosi) qo‘yishimiz mumkin, yoxud o‘zimiz yangi yadro qurib olishimiz ham mumkin.
Gradientlar va Sobel hosilasi:
Tasvir gradientlarini (chegaralarini) aniqlashda eng ko‘p foydalaniladigan usullardan biri Sobel hisoblanadi. Sobel funksiyasi quyida berilgan:
cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size = 3 );
Quyidagi rasmda (4.8-rasm) berilgan tasvir va uning Sobel gradienti natijasi ko‘rsatilgan.
4.8-rasm. Berilgan tasvir (a) va uning Sobel gradienti natijasi (b)
Laplas (Laplace) gradienti:
void cvLaplace(const CvArr* src,CvArr* dst,int apertureSize= 3);
Kanni (Canny) gradienti:
void cvCanny( const CvArr* img, CvArr* edges, double lowThresh, double highThresh,
int apertureSize= 3);
7. OpenCV da Xaf (Hough) almashtirishlari
Xaf almashtirishi yordamida chiziqlarni topish:
CvSeq* cvHoughLines2(CvArr* image,void* line_storage,int method,double rho,double theta,int threshold,double param1 = 0,double param2 = 0);
Xaf almashtirishi yordamida aylanalarni topish:
CvSeq* cvHoughCircles(CvArr* image, void* circle_storage,int method,double dp,double min_dist,double param1 = 100,double param2 = 300,int min_radius = 0,int max_radius = 0);
|