Roberts边缘检测算子:根据一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差。

小波变换的方法比较适用于展现夹带在正常信号中的瞬间反常现象,具有方向敏感性。所以可以边缘检测。

Roberts边缘检测算子:

clear;
I=imread('D:\文件及下载相关\图片\gray2.png');
I=rgb2gray(I);
grayPic=mat2gray(I);
[m,n]=size(grayPic);
newGrayPic=grayPic;
robertsNum=;
robertThreshold=0.2;
for j=:m-
for k=:n-
robertsNum = abs(grayPic(j,k)-grayPic(j+,k+)) + abs(grayPic(j+,k)-grayPic(j,k+));
if(robertsNum > robertThreshold)
newGrayPic(j,k)=;
else
newGrayPic(j,k)=;
end
end
end
figure,imshow(newGrayPic);
title('roberts')

小波变换检测边缘:

clear all;
I = imread('D:\文件及下载相关\图片\gray2.png');
I = rgb2gray(I);imshow(I);
I1 = imadjust(I,stretchlim(I),[,]);figure;imshow(I1);
[N,M] = size(I);
h = [0.125,0.375,0.375,0.125];
g = [0.5,-0.5];
delta = [,,];
J = ;
a(:N,:M,,:J+) = ;
dx(:N,:M,,:J+) = ;
dy(:N,:M,,:J+) = ;
d(:N,:M,,:J+) = ;
a(:,:,,) = conv2(h,h,I,'same');
dx(:,:,,) = conv2(delta,g,I,'same');
dy(:,:,,) = conv2(g,delta,I,'same');
x = dx(:,:,,);
y = dy(:,:,,);
d(:,:,,) = sqrt(x.^+y.^);
I1 = imadjust(d(:,:,,),stretchlim(d(:,:,,)),[ ]);figure;imshow(I1);
lh = length(h);
lg = length(g);
for j = :J+
lhj = ^j*(lh-)+;
lgj = ^j*(lg-)+;
hj(:lhj)=;
gj(:lgj)=;
for n = :lh
hj(^j*(n-)+)=h(n);
end
for n = :lg
gj(^j*(n-)+)=g(n);
end
a(:,:,,j+) = conv2(hj,hj,a(:,:,,j),'same');
dx(:,:,,j+) = conv2(delta,gj,a(:,:,,j),'same');
dy(:,:,,j+) = conv2(gj,delta,a(:,:,,j),'same');
x = dx(:,:,,j+);
y = dy(:,:,,j+);
dj(:,:,,j+) = sqrt(x.^+y.^);
I1 = imadjust(dj(:,:,,j+),stretchlim(dj(:,:,,j+)),[ ]);
figure;imshow(I1);
end

图像边缘检测经典算子及MATLAB实现 - CSDN博客 http://blog.csdn.net/u012808193/article/details/45722283

边缘检测是图像分析和模式识别的主要特征提取手段。所谓边缘是指其周围像素灰度后阶变化或屋顶状变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域,基元与基元之间。 因此它是图象分割所依赖的重要的特征,也是纹理特征的重要信息源和形状特征的基础;而图象的纹理形状特征的提取又常常依赖于图象分割。 图象的边缘提取也是图象匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。

目前常用的边缘检测方法有:Roberts边缘检测算子、Sobel边缘检测算子、Prewitt边缘检测算子、Laplace边缘检测算子等等。

1、Roberts边缘检测算子

Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差。

MATLAB实验代码如下:

clear;
sourcePic=imread('lena.jpg'); %读取原图像
grayPic=mat2gray(sourcePic); %实现图像矩阵的归一化操作
[m,n]=size(grayPic);
newGrayPic=grayPic;%为保留图像的边缘一个像素
robertsNum=; %经roberts算子计算得到的每个像素的值
robertThreshold=0.2; %设定阈值
for j=:m- %进行边界提取
for k=:n-
robertsNum = abs(grayPic(j,k)-grayPic(j+,k+)) + abs(grayPic(j+,k)-grayPic(j,k+));
if(robertsNum > robertThreshold)
newGrayPic(j,k)=;
else
newGrayPic(j,k)=;
end
end
end
figure,imshow(newGrayPic);
title('roberts算子的处理结果')

实验结果: 

2、Sobel边缘检测算子

对数字图像的每个像素,考察它上、下、左、右邻点灰度的加权差,与之接近的邻点的权大。 
MATLAB实验代码如下:

clear;
sourcePic=imread('lena.jpg');%读取原图像
grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作
[m,n]=size(grayPic);
newGrayPic=grayPic;%为保留图像的边缘一个像素
sobelNum=;%经sobel算子计算得到的每个像素的值
sobelThreshold=0.8;%设定阈值
for j=:m- %进行边界提取
for k=:n-
sobelNum=abs(grayPic(j-,k+)+*grayPic(j,k+)+grayPic(j+,k+)-grayPic(j-,k-)-*grayPic(j,k-)-grayPic(j+,k-))+abs(grayPic(j-,k-)+*grayPic(j-,k)+grayPic(j-,k+)-grayPic(j+,k-)-*grayPic(j+,k)-grayPic(j+,k+));
if(sobelNum > sobelThreshold)
newGrayPic(j,k)=;
else
newGrayPic(j,k)=;
end
end
end
figure,imshow(newGrayPic);
title('Sobel算子的处理结果')

实验结果: 

3、Prewitt边缘检测算子

Prewitt算子是一种边缘样板算子。这些算子样板由理想的边缘子图像构成。依次用边缘样板去检测图像,与被检测区域最为相似的样板给出最大值。 
MATLAB实验代码

clear;
sourcePic=imread('lena.jpg');%读取原图像
grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作
[m,n]=size(grayPic);
newGrayPic=grayPic;%为保留图像的边缘一个像素
PrewittNum=;%经Prewitt算子计算得到的每个像素的值
PrewittThreshold=0.5;%设定阈值
for j=:m- %进行边界提取
for k=:n-
PrewittNum=abs(grayPic(j-,k+)-grayPic(j+,k+)+grayPic(j-,k)-grayPic(j+,k)+grayPic(j-,k-)-grayPic(j+,k-))+abs(grayPic(j-,k+)+grayPic(j,k+)+grayPic(j+,k+)-grayPic(j-,k-)-grayPic(j,k-)-grayPic(j+,k-));
if(PrewittNum > PrewittThreshold)
newGrayPic(j,k)=;
else
newGrayPic(j,k)=;
end
end
end
figure,imshow(newGrayPic);
title('Prewitt算子的处理结果')

实验结果 

4、Laplace边缘检测算子

Laplacian 算子是n维欧几里德空间中的一个二阶微分算子。 
MATLAB实验代码

clear;
sourcePic=imread('lena.jpg');%读取原图像
grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作
[m,n]=size(grayPic);
newGrayPic=grayPic;%为保留图像的边缘一个像素
LaplacianNum=;%经Laplacian算子计算得到的每个像素的值
LaplacianThreshold=0.2;%设定阈值
for j=:m- %进行边界提取
for k=:n-
LaplacianNum=abs(*grayPic(j,k)-grayPic(j-,k)-grayPic(j+,k)-grayPic(j,k+)-grayPic(j,k-));
if(LaplacianNum > LaplacianThreshold)
newGrayPic(j,k)=;
else
newGrayPic(j,k)=;
end
end
end
figure,imshow(newGrayPic);
title('Laplacian算子的处理结果')

实验结果 

边缘检测算子和小波变换提取图像边缘【matlab】的更多相关文章

  1. 利用matlab写一个简单的拉普拉斯变换提取图像边缘

    可以证明,最简单的各向同性微分算子是拉普拉斯算子.一个二维图像函数 f(x,y) 的拉普拉斯算子定义为 ​ 其中,在 x 方向可近似为 ​ 同理,在 y 方向上可近似为 ​ 于是 我们得到满足以上三个 ...

  2. 利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数

      clear all;close all;clc; I = imread('rice.png'); I = im2bw(I); J = bwperim(I); % 提取二值图像图像边缘 figure ...

  3. matlab 提取图像轮廓(图像边缘提取)

    利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下: close all;clear all;clc; % 提取图像轮廓,提取图像边缘 I = imread ...

  4. 基于MATLAB边缘检测算子的实现

    基于MATLAB边缘检测算子的实现 作者:lee神 1.   概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要 ...

  5. 图像边缘检测——几种图像边缘检测算子的学习及python 实现

    本文学习利用python学习边缘检测的滤波器,首先读入的图片代码如下: import cv2 from pylab import * saber = cv2.imread("construc ...

  6. MATLAB·提取图像中多个目标

    基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...

  7. canny算子求图像边缘,edgebox那部分

    过程: 1.      彩色图像转换为灰度图像    2.      对图像进行高斯模糊    3.      计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅 ...

  8. 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容

    基于知乎上的一个答案.问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢 ...

  9. OpenCV图像处理篇之边缘检测算子

    OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...

随机推荐

  1. Unity AssetServer小笔记

    普及一下Asset Server知识: Unity的Asset Server,其实就是一个纯PostgreSQL数据库.Unity操作Asset Server,就是一个数据库客户端操作,但是Unity ...

  2. LoadRunner中调用SHA1算法加密字符串

    参考<SHA-1 hash for LoadRunner>: http://ptfrontline.wordpress.com/2010/03/02/sha-1-hash-for-load ...

  3. Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance, we've been making all of our data members public in order to ...

  4. 13-spring学习-class类型表达式

    Class表达式 spring中对于class反射机制也有自己的处理. 1,class::使用T(类名)的形式可以取得一个指定泛型类型的Class对象. 范例: package com.Spring. ...

  5. B2C电子商务系统研发——产品媒体常见功能点

    产品媒体常见功能点 电商研发系列——产品媒体常见功能点 支持图片.视频和文档等媒体类型 产品图片对清晰度要求比极高,但又不能太大,所以图片一般是jpg格式. 视频一般是flv流媒体格式,如果是嵌入产品 ...

  6. phpexcel表的一些设置

    $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); //set default styles$objPHPE ...

  7. C++的泛型编程方式

    1.使用类模板创建数组 下面这段代码:是创建一个元素为 T 类型的数组. #pragma once template<class T> class MyArray { public: // ...

  8. Ubuntu11.04中如何将pycharm添加到系统的“应用程序”菜单里 (pycharm已成功安装)

    默认排序 Stu.zhouyc   21 人赞同了该回答 tools---->create desktop entry...不是很方便吗? 发布于 2016-04-09 21添加评论 分享 收藏 ...

  9. laravel中,提交表单后给出提示例如添加成功,添加失败等等

    laravel中的表单插入,我想在表单插入成功后,可以像thinkphp一样可以有一个提示内容,上网Google,他们还是给出的方法就是 return redirect('/')->with(' ...

  10. JAVA Socket 底层是怎样基于TCP/IP 实现的???

    首先必须明确:TCP/IP模型中有四层结构:       应用层(Application Layer).传输层(Transport  Layer).网络层(Internet Layer  ).链路层( ...