Компьютерная обработка изображений Лекция 6 СПбГУ ИТМО 2003
Окрестности каузальная окрестность некаузальная окрестность полукаузальная окрестность
Действие функции iplBlur void iplBlur(IplImage* srcImage, IplImage* dstImage, int nCols, int nRows, int anchorX, int anchorY); 3 x 3 5 x 5
Масочная фильтрация IplConvKernel* iplCreateConvKernel(int nCols, int nRows, int anchorX, int anchorY, int* values, int nShiftR); - создание ядра свертки void iplGetConvKernel(IplConvKernel* kernel, int* nCols, int* nRows, int* anchorX, int* anchorY, int** values, int* nShiftR); - получение ядра свертки void iplConvolve2D(IplImage* srcImage, IplImage* dstImage, IplConvKernel** kernel, int nKernels, int combineMethod); - выполнение свертки void iplDeleteConvKernel(IplConvKernel* kernel); - удаление ядра свертки
Масочная фильтрация void iplConvolve2D(IplImage* srcImage, IplImage* dstImage, IplConvKernel** kernel, int nKernels, int combineMethod); - выполнение свертки IPL_SUM // результат сверток суммируется IPL_SUMSQ // суммируются квадраты результатов IPL_SUMSQROOT // суммируются квадраты результатов, а затем вычисляется корень квадратный IPL_MAX // Выбирается максимальный результат IPL_MIN // Выбирается минимальный результат
Масочная фильтрация void MaskFiltering(IplImage* img) { // Скопировать исходное изображение во временное IplImage* tmp = iplCloneImage (img); // Подготовить массив ядра свертки int one[9] = {1,-1,1,-1,1,-1,1,-1,1}; // Создать ядро свертки IplConvKernel* kernel=iplCreateConvKernel(3, 3, 1, 1, one, 0); // Выполнить свертку iplConvolve2D(img, tmp, &kernel, 1, IPL_SUM); // Удалить ядро свертки iplDeleteConvKernel(kernel); // Освободить память исходного изображения iplDeallocate(img, IPL_IMAGE_ALL ); // Скопировать результат в исходное изображение img=iplCloneImage(tmp); // Освободить память временного изображения iplDeallocate( tmp, IPL_IMAGE_ALL ); }
Масочная фильтрация
Масочная фильтрация int iplFixedFilter(IplImage* srcImage, IplImage* dstImage, IplFilter filter); - выполнение фильтрации IPL_PREWITT_3x3_V // градиентный фильтр Превитта (вертикальный) IPL_PREWITT_3x3_H // градиентный фильтр Превитта (вертикальный) IPL_SOBEL_3x3_V // градиентный фильтр Собеля (вертикальный) IPL_SOBEL_3x3_H // градиентный фильтр Собеля (вертикальный) IPL_LAPLACIAN_3x3 // фильтр высоких частот Лапласа (3X3) IPL_LAPLACIAN_5x5 // фильтр высоких частот Лапласа (5X5) IPL_GAUSSIAN_3x3 // фильтр низких частот Гаусса (3X3) IPL_GAUSSIAN_5x5 // фильтр низких частот Гаусса (5X5) IPL_HIPASS_3x3 // фильтр высоких частот (3X3) IPL_HIPASS_5x5 // фильтр высоких частот (5X5) IPL_SHARPEN_3x3 // фильтр повышения резкости
Градиентный фильтр Превитта IPL_PREWITT_3x3_V =
Градиентный фильтр Превитта IPL_PREWITT_3x3_H =
Градиентный фильтр Собеля IPL_SOBEL_3x3_V =
Градиентный фильтр Собеля IPL_SOBEL_3x3_H =
Фильтр высоких частот Лапласа IPL_LAPLACIAN_3x3 = IPL_HIPASS_3x3=
Фильтр высоких частот Лапласа IPL_LAPLACIAN_5x5 =
Фильтр высоких частот IPL_HIPASS_5x5 = 24
Фильтр низких частот Гаусса IPL_GAUSSIAN_3x3 =
Фильтр низких частот Гаусса IPL_ GAUSSIAN_5x5 =
Фильтр повышения резкости IPL_SHARPEN_3x3 =
Действие функции iplMedianFilter void iplMedianFilter(IplImage* srcImage, IplImage* dstImage, int nCols, int nRows, int anchorX, int anchorY); 3 x 3 5 x 5
Действие функции iplMaxFilter void iplMaxFilter(IplImage* srcImage, IplImage* dstImage, int nCols, int nRows, int anchorX, int anchorY); 3 x 3 5 x 5
Действие функции iplMinFilter void iplMinFilter(IplImage* srcImage, IplImage* dstImage, int nCols, int nRows, int anchorX, int anchorY); 3 x 3 5 x 5