边缘检测算子和小波变换提取图像边缘【matlab】
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】的更多相关文章
- 利用matlab写一个简单的拉普拉斯变换提取图像边缘
可以证明,最简单的各向同性微分算子是拉普拉斯算子.一个二维图像函数 f(x,y) 的拉普拉斯算子定义为 其中,在 x 方向可近似为 同理,在 y 方向上可近似为 于是 我们得到满足以上三个 ...
- 利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数
clear all;close all;clc; I = imread('rice.png'); I = im2bw(I); J = bwperim(I); % 提取二值图像图像边缘 figure ...
- matlab 提取图像轮廓(图像边缘提取)
利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下: close all;clear all;clc; % 提取图像轮廓,提取图像边缘 I = imread ...
- 基于MATLAB边缘检测算子的实现
基于MATLAB边缘检测算子的实现 作者:lee神 1. 概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要 ...
- 图像边缘检测——几种图像边缘检测算子的学习及python 实现
本文学习利用python学习边缘检测的滤波器,首先读入的图片代码如下: import cv2 from pylab import * saber = cv2.imread("construc ...
- MATLAB·提取图像中多个目标
基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...
- canny算子求图像边缘,edgebox那部分
过程: 1. 彩色图像转换为灰度图像 2. 对图像进行高斯模糊 3. 计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅 ...
- 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
基于知乎上的一个答案.问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢 ...
- OpenCV图像处理篇之边缘检测算子
OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...
随机推荐
- Android studio及eclipse中的junit单元測试
转载请标明出处:http://blog.csdn.net/nmyangmo/article/details/51179106 前一段时间有人问我单元測试的相关内容,我稍作总结做日志例如以下: 由于我接 ...
- 轻松学,浅析依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI) 依赖注入和控制反转的理解,写的太好了。
轻松学,浅析依赖倒置(DIP).控制反转(IOC)和依赖注入(DI) 2017年07月13日 22:04:39 frank909 阅读数:14269更多 所属专栏: Java 反射基础知识与实战 ...
- Lintcode---二叉树的层次遍历(原型)
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 ...
- Linux 基础学习(第一节)
IP地址的配置 配置临时IP地址 ifconfig etho 192.168.0.91 255.255.255.0 图形化下面配置IP地址: 重启网卡服务: shell环境配置网卡信息 必备的参数 关 ...
- Top 10 Project Management Software
- linux文本分析利器awk
转 快速理解linux文本分析利器awk 原文链接 杜亦舒 性能与架构 awk是什么 如果工作中需要操作linux比较多,那么awk是非常值得学习的 awk是一个极其强大的文本分析工具,把文件逐行的读 ...
- struts和spring整合
开发流程: 1)引jar包,可以在配置工程中设置用户libarary,然后直接引入.如果在web-inf/lib没有用户导入的lib文件,可以参考问题0的解决方案 需要的是struts_core,sp ...
- 静态资源打包:一个javescript 的src引用多个文件,一个link引用多个CSS文件
疑惑描述: 查看了淘宝网的首页源文件,看到这样的一个特殊的 <script src="http://a.tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/ ...
- JVM虚拟机(一):java虚拟机的基本结构
1: 类加载子系统(负责从文件系统或者网络中加载class信息,加载的类信息存放于一块成为方法区的内存空间.除了类信息外,方法区中可能还存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息 ...
- PHPCMS V9数据库表结构分析
PHPCMS V9可以轻松承载百万级的访问数据,最大的功臣就是PHPCMS良好的数据库结构,在数据库的设计方面,一定是下足了功夫. 一般网站的信息量离这个级别相差甚远,但是了解学习一下PHPCMS ...