Java+opencv3.2.0之scharr滤波器

在opencv中scharr滤波器是配合sobel算子的运算而存在的。当sobel内核为3时,结果可能会产生比较明显的误差,针对这一问题,Opencv提供了scharr函数。该函数只针对大小为3的核,并且运算速率和sobel函数一样快,结果更加精确,但抗噪性不如sobel函数。
使用scharr滤波器计算x或y方向的图像差分,它的参数变量和sobel一样。

函数:Imgproc.Scharr(Mat src, Mat dst, int ddepth, int dx, int dy, double scale, double delta, int borderType)

参数说明:

src:源图像
dst:检测结果图像
ddepth:输出图像的深度
dx:x方向上的差分阶数
dy:y方向上的差分阶数
scale:缩放因子
delta:结果存入输出图像前可选的delta值,默认为0
borderType:边界模式,默认BORDER_DEFAULT

示例代码:

public static void main(String[] args)
  {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    Mat src = Imgcodecs.imread("F:\\2011031213205880528.jpg");

    Mat dst = src.clone();
    Mat dstx = src.clone();
    Mat dsty = src.clone();
    Imgproc.GaussianBlur(src, dst, new Size(3, 3), 0);

    Imgproc.cvtColor(dst, dst, Imgproc.COLOR_RGB2GRAY);

    Imgproc.Scharr(dst, dstx, -1, 1, 0, 1, 0, Core.BORDER_DEFAULT);
    Imgcodecs.imwrite("F:\\dstx.jpg", dstx);

    Imgproc.Scharr(dst, dsty, -1, 0, 1, 1, 0, Core.BORDER_DEFAULT);
    Imgcodecs.imwrite("F:\\dsty.jpg", dsty);

    Core.addWeighted(dstx, 0.5, dsty, 0.5, 0, dst);
    Imgcodecs.imwrite("F:\\dst.jpg", dst);

  }

源图像:

X方向的scharr:

Y方向的scharr:

合并梯度后:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Java+opencv3.2.0实现重映射
  • Java+opencv3.2.0实现模板匹配
  • Java+opencv3.2.0实现hough直线检测
  • Java+opencv3.2.0实现hough圆检测功能
  • Java+opencv3.2.0实现人脸检测功能
(0)

相关推荐

  • Java+opencv3.2.0实现模板匹配

    模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术. 函数:Imgproc.matchTemplate(Mat image, Mat templ, Mat result, int method) 参数说明: image:源图像 templ:模板图像 result:比较结果 method:匹配算法 匹配算法: TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配:最好的匹配值为0:匹配越差,匹配值越大. TM_CCORR 相关匹配法:该方法采用乘法操作:数值越大表明匹配

  • Java+opencv3.2.0实现人脸检测功能

    说到人脸检测,首先要了解Haar特征分类器.Haar特征分类器说白了就是一个个的xml文件,不同的xml里面描述人体各个部位的特征值,比如人脸.眼睛等等.OpenCV3.2.0中提供了如下特征文件: haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalcatface.xml haarcascade_frontalcatface_extended.xml haarcascade_frontalface

  • Java+opencv3.2.0实现hough直线检测

    hough变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特定形状的集合作为hough变换结果. 发展史: 1962年由PaulHough首次提出,用来检测直线和曲线. 1972年由Richard Duda & Peter Hart推广使用,扩展到任意形状物体的识别. 原理: 一条直线在直角坐标系下的表示形式为y=k*x+b,而在极坐标系下表示为r=x*cos(theta)+y*sin(theta).hough变换的思想为在直角坐标系下的一个点对

  • Java+opencv3.2.0实现hough圆检测功能

    hough圆检测和hough线检测的原理近似,对于圆来说,在参数坐标系中表示为C:(x,y,r). 函数: Imgproc.HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius) 参数说明: image:源图像 circles:检测到的圆的输出矢量(x,y,r) method:使用的

  • Java+opencv3.2.0实现重映射

    通过重映射来表达每个像素的位置(x,y) :g(x,y)=f(h(x,y)),h(x,y)是映射方法函数.当h(x,y) = (I.cols()-x,y),表示按照x轴方向发生偏转. 函数:Imgproc.remap(Mat src, Mat dst, Mat map1, Mat map2, int interpolation, int borderMode, Scalar borderValue) 参数说明: src:源图像 dst:目标图像 map1:它有两种可能表示的对象,一种是表示点(x

  • Java+opencv3.2.0之scharr滤波器

    在opencv中scharr滤波器是配合sobel算子的运算而存在的.当sobel内核为3时,结果可能会产生比较明显的误差,针对这一问题,Opencv提供了scharr函数.该函数只针对大小为3的核,并且运算速率和sobel函数一样快,结果更加精确,但抗噪性不如sobel函数. 使用scharr滤波器计算x或y方向的图像差分,它的参数变量和sobel一样. 函数:Imgproc.Scharr(Mat src, Mat dst, int ddepth, int dx, int dy, double

  • Java+opencv3.2.0实现轮廓检测

    轮廓是由一系列的点组成的集合,表现在图像中就是一条曲线. OpenCV3.2.0中提供了查找轮廓的方法: Imgproc.findContours(Mat image, List contours, Mat hierarchy, int mode, int method, Point offset) 参数说明: image:8位单通道图像. contours:存储检测到的轮廓的集合. hierarchy:可选的输出向量,包含了图像轮廓的拓扑信息. mode:轮廓检索模式.有如下几种模式: 1.R

  • Java+opencv3.2.0之直方图均衡详解

    直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法. 直方图均衡化的步骤: 1.计算输入图像的直方图H 2.进行直方图归一化,使直方图组距的和为255 3.计算直方图积分 4.采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换 函数:Imgproc.equalizeHist(Mat src, Mat dst) 参数说明: src:源图像 dst:运算结果图像 示例代码: public static void main(String[] args) { Sys

  • opencv配置的完整步骤(win10+VS2015+OpenCV3.1.0)

    一.前言(吐槽+煽情+简介) 1.吐槽 为啥这个时候我要发这个呢?其实我是想以后有空的时候再发,因为最近事情比较多,但是,昨天发生了一件非常悲伤的事情,电脑电池炸了,电脑电池炸了,电脑电池炸了. 不由得安慰自己:天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其生,行拂乱其所为,所以动心忍性,增益其所不能. 2.煽情 在这里,我还是要感谢一下一个人,一个我生命中最重要的男人,他对自己"小气"了一辈子,出去工作,舍不得乱花一分钱,但他还是会倾其所有来满足我,他说,这个时候,你要

  • win10下vs2015配置Opencv3.1.0详细过程

    才发现Opencv3.1.0已经发布了,刚好电脑重装系统就配置了一下,发现比Opencv2的配置过程更加简单,而且已经适配了vs2015. 下载安装Opencv3.1.0 1.下载Opencv3.1.0,进入官网,点击opencv for windows即可下载. 点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为只有C盘,所以就直接在C盘建了一个文件夹Opencv3.1.0. 选好路径之后点击Extract即可. OpenCV3.1.0环境变量配置 选择此电脑(计算机

随机推荐