边缘检测算子和小波变换提取图像边缘【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 ...
随机推荐
- html5:article与section元素
article元素 aiticle元素代表文档.页面或应用程序中独立的.完整的.可以肚子被外部引用的内容.它可以使一片博客或报刊中的文章.帖子. 一个article元素 ...
- ZK框架笔记4、通用组件、页面、桌面
组件(component)是一种用户接口(UI)对象,如一个标签.按钮.树. 页面(page)是一个组件的集合. 桌面(desktop)是一个包含相同URL请求的页面. ...
- 【Linux】监控系统的状态
1.w命令 w命令是一个很强大的命令,该命令显示的信息比较丰富.以下是我的虚拟机w命令的一个展示 从上图我们可以看到: 第一行从左面开始显示的信息依次为:时间.系统运行时间.登陆用户数.平均负载 第二 ...
- html+css+js实现科学计算器
代码地址如下:http://www.demodashi.com/demo/13751.html 项目描述 纯html+css+js实现一个科学计算器,支持平方开方指数对数等基本函数,支持键盘输入,有简 ...
- lsb_release: command not found 解决
问题:lsb_release 是查看系统版本信息的工具 [root@localhost ~]# lsb_release -a-bash: lsb_release: command not found ...
- CSS3实现加载中的动画效果
本篇文章由:http://xinpure.com/css3-implementations-of-loading-an-animation-effect/ Loading 的菊花图形组合的不太好,基本 ...
- 网络请求框架---Volley
去年的Google I/O大会为android开发者带来了一个网络请求框架,它的名字叫做Volley.Volley诞生的使命就是让Android的网络请求更快,更健壮,而且它的网络通信的实现是基于Ht ...
- js错误处理和调试
1.重点关注函数和可能导致函数执行失败的因素. 2.抛出错误和使用try-catch的时机:一般来说在应用程序架构较低的层次中经常会抛出错误.这个层次并不会影响当前执行的代码. 错误也得不到真正的处理 ...
- 补知识:EntityFramework Core映射关系详解
前言 本节我们回归下EF Core基础,来讲述EF Core中到底是如何映射的,废话少说,我们开始. One-Many Relationship(一对多关系) 首先我们从最简单的一对多关系说起,我们给 ...
- HDU 5303 Delicious Apples(思维题)
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...