图像的轮廓提取-Robert算子

图像的边缘:周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,边缘广泛存在于物体与背景之间、物体与物体之间,基元与基元之间,是图像分割的重要依据。

物体的边缘是由灰度不连续性形成的,经典的边缘提取方法是考察图像的每个像素在某个领域内灰度的变化,利用边缘邻近一阶或二阶方向倒数变化规律,用简单的方法检测边缘,这种方法称为边缘检测局部算子。

        public Bitmap Robert(Image image)
{
int width = image.Width;
int height = image.Height; Bitmap temp=new Bitmap(width,height);
Bitmap bitmap=(Bitmap)image; int x,y,p0,p1,p2,p3,result;
Color[]pixel=new Color[]; for (y = height - ; y > ; y--)
{
for (x = ; x < width - ; x++)
{
pixel[] = bitmap.GetPixel( x, y );
pixel[] = bitmap.GetPixel(x,y+);
pixel[] = bitmap.GetPixel( x + , y );
pixel[] = bitmap.GetPixel( x + , y + );
p0 = (int)(0.3 * pixel[].R + 0.59 * pixel[].G + 0.11 * pixel[].B);
p1 = (int)(0.3 * pixel[].R + 0.59 * pixel[].G + 0.11 * pixel[].B);
p2 = (int)(0.3 * pixel[].R + 0.59 * pixel[].G + 0.11 * pixel[].B);
p3 = (int)(0.3 * pixel[].R + 0.59 * pixel[].G + 0.11 * pixel[].B);
result = (int)Math.Sqrt( (p0 - p3) * (p0 - p3) + (p1 - p2) * (p1 - p2) );
if (result > )
result = ;
if (result < )
result = ;
temp.SetPixel( x, y, Color.FromArgb( result, result, result ) );
}
}
return temp;
}

图像处理-07-图像的轮廓提取-Robert算子的更多相关文章

  1. Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法

    原文:Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法  [函数名称]   二值图像轮廓提取         ContourExtraction(WriteableBitm ...

  2. Win8Metro(C#)数字图像处理--2.40二值图像轮廓提取

    http://dongtingyueh.blog.163.com/blog/static/4619453201271481335630/ [函数名称] 二值图像轮廓提取         Contour ...

  3. Win8 Metro(C#)数字图像处理--2.65形态学轮廓提取算法

    原文:Win8 Metro(C#)数字图像处理--2.65形态学轮廓提取算法  [函数名称]   形态学轮廓提取函数       WriteableBitmap Morcontourextract ...

  4. python-opencv在有噪音的情况下提取图像的轮廓

    对于一般的图像提取轮廓,这篇博文介绍了一个很好的方法,但是对于有噪声的图像,并不能很好地捕获到目标物体. 比如对于我的鼠标,提取的轮廓效果并不好,因为噪声很多: 所以本文增加了去掉噪声的部分. 首先加 ...

  5. python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取

    实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...

  6. Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  7. opencv: 轮廓提取;

    一般轮廓提取是通过对图像的梯度进行卷积计算,得到图像边缘(滤波),常用的边缘检测方法有candy.sobel. Laplacian等,再对二值化后的边缘图像进行轮廓计算: 1.Candy算子: cv: ...

  8. matlab中可用于进行轮廓提取的函数

    本文主要总结一下在matlab中可用于进行轮廓提取的函数. 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下: %读取原图im = imread( ...

  9. Python图像处理丨图像腐蚀与图像膨胀

    摘要:本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法. 本文分享自华为云社区<[Python图像处理] 八.图像腐蚀与图像膨胀>,作者: eastmount . ...

随机推荐

  1. 邮件工具类--EmailUtil

    /* Copyright Notice ===================================================* * This file contains propri ...

  2. 给jdk写注释系列之jdk1.6容器(2)-LinkedList源码解析

    LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明.   1.链表的概念      链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链 ...

  3. VSX规划Package文件

    VSX是VS扩展,可以针对不同项目编写插件,虽然接触VSX的时间并不多,但是当了解VSX后深刻感受到VSX的魅力. VSX的材料比较少,配置文件也很繁琐,当初我也走了不少弯路. 这篇文章将帮助您更好的 ...

  4. (转载)运行主机管理在openvswitch之上

    在这篇文章里介绍了如果运行主机管理在openvswitch之上,而不是单独配置一个物理网卡用于主机管理,并且所有的vm的流量还是通过openvswitch走的. Running Host Manage ...

  5. Spring(3.2.3) - Beans(10): 生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,容器能够跟踪 Bean 实例的创建.销毁.管理 Bean 生命周期行为主要有两个时机: 注入 Bean 的依赖关系之后 即 ...

  6. 【网络收集】MySql中IS NOT NULL与!=NULL的区别

    在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大!为什么会出现这种情况呢?null 表示什么也 ...

  7. Cocos2d-x数据持久化-查询数据

    数据查询一般会带有查询条件,这可以使用SQL语句的where子句实现,但是在程序中需要动态绑定参数给where子句.查询数据的具体操作步骤如下所示.(1) 使用sqlite3_open函数打开数据库. ...

  8. JS面向对象5中写法

    //定义Circle类,拥有成员变量r,常量PI和计算面积的成员函数area() //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14 ...

  9. spring quartz 定时任务“Failed to load class "org.slf4j.impl.StaticLoggerBinder”“Checking for available updated version of Quartz”

    Failed to load class "org.slf4j.impl.StaticLoggerBinder 需要slf4j-api.jar.slf4j-log4j12.jar Check ...

  10. linux之Gcc使用

    本篇文章摘自 http://blog.csdn.net/ljzcom/article/details/7213101 对于Gcc自带的很多命令行,只有具体编程里面用到了或者看到别人真真用到的,用的目的 ...