Prewitt算子计算图像梯度

article/2025/11/9 3:42:01

Prewitt算子是一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成,这两个方向模板一个检测水平边缘,一个检测垂直边缘。同时,为了在锐化边缘的同时减少噪声的影响,Prewitt算子从Robert算子的模板出发,由2x2扩大到3x3来计算差分,本质上是利用卷积运算的模板,最终效果是求灰度图像各点的梯度,对应模板如下图所示。

-1

0

1

-1

0

1

-1

0

1

-1

-1

-1

 0

0

0

1

1

1

两个模板分别计算gx和gy,并且为简化梯度的计算,通常会取gx和gy模的最大值代表梯度或者用gx与gy模的和代替梯度值。

当图像的梯度算出后,就可根据不同的需求生成不同的增强图像,经常使用的有五种增强图像的方法。

 

  1. Prewitt算子计算图像梯度源代码:

img=imread('均衡.jpg');

img=rgb2gray(img);

figure(1);imshow(img);

figure(2);imhist(img);

[m n]=size(img);

G1=img;

G2=G1;G3=G1;G4=G1;G5=G1;

for i=2:m-1

    for j=2:n-1

        gx=img(i-1,j+1)+img(i,j+1)+img(i+1,j+1)-...

           img(i-1,j-1)-img(i,j-1)-img(i+1,j-1);

        gy=img(i+1,j-1)+img(i+1,j)+img(i+1,j+1)-...

           img(i-1,j-1)-img(i-1,j)-img(i-1,j+1);

       G1(i,j)=abs(gx)+abs(gy);

       if G1(i,j)>=30

           G2(i,j)=G1(i,j);

       else

           G2(i,j)=img(i,j);

       end

       if G1(i,j)>=100

           G3(i,j)=255;

       else

           G3(i,j)=img(i,j);

       end

       if G1(i,j)>=50

           G4(i,j)=G1(i,j);

       else

           G4(i,j)=0;

       end

       if G1(i,j)>=60

           G5(i,j)=255;

       else

           G5(i,j)=0;

       end

    end

end

figure(3);imshow(G1);

figure(4);imshow(G2);

figure(5);imshow(G3);

figure(6);imshow(G4);

figure(7);imshow(G5);

 

2.实验结果图

 

图1 原灰度图及其直方图

 

图2 Prewitt算子第一种增强图        图3 Prewitt算子第二种增强图

 

图4 Prewitt算子第三种增强图         图5 Prewitt算子第四种增强图

 

     图6 Prewitt算子第五种增强图

 

3.实验总结分析

由实验结果可得,利用Prewitt算子求出图像的梯度后有五种增强图像的方法:

第一种增强图像是使该点的灰度等于该点梯度,但是这种方法的增强图像仅显示灰度变化比较陡的边缘轮廓,而灰度变化比较平缓或均匀的区域则呈黑色。 

第二种增强图像是当图像梯度大于某阈值时用该点梯度代替该点灰度值,其他区域用原灰度值代表,只要阈值取得比较恰当就可以得到明显的边缘轮廓,又不会破坏原来灰度变化比较平缓的背景。

第三种增强图像是当图像梯度大于某阈值时用某个特定灰度级代替,其他区域用原灰度值表示,增强图像的明显边缘会用一个固定的灰度级表现。

第四种增强图像是当图像梯度大于某阈值时用该点梯度代表该点灰度值,其他区域用某个特定灰度级代替,该增强图像的背景用特定灰度级变现,便于研究边缘灰度的变化。

第五种增强图像是当图像梯度大于某阈值时用某个特定灰度级代替,其他区域用另一个灰度级代替,形成一幅二值图像,便于研究边缘所在的位置。

除去第一种增强图像外,对于其他四种增强图像,若想得到比较清晰的边缘轮廓就需要选择恰当的阈值,若是阈值选择不好,边缘的效果也会相应差一点,因此需要不断尝试选择比较适合的阈值。


http://chatgpt.dhexx.cn/article/WcWxABIX.shtml

相关文章

opencv-6 边缘检测(Prewitt算子,Sobel算子,Laplacian算子)

Roberts filter2D形式实现 import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(lena.jpg) lenna_img cv2.cvtColor(img,cv2.COLOR_BGR2RGB) grayImage cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)kernelx np.array([[-1,0],[0,1]],dtypeint) kernely…

梯度与Roberts、Prewitt、Sobel、Lapacian算子

一、学习心得: 学习图像处理的过程中,刚开始遇到图像梯度和一些算子的概念,这两者到底是什么关系,又有什么不同,一直困扰着我。后来在看到图像分割这一模块后才恍然大悟,其实图像的梯度可以用一阶导数和二…

【计算机视觉】图像分割与特征提取——基于Roberts、Prewitt、Sobel算子的图像分割实验

个人简介: > 📦个人主页:赵四司机 > 🏆学习方向:JAVA后端开发 > ⏰往期文章:SpringBoot项目整合微信支付 > 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 > &#…

边缘检测——Prewitt算子

垂直水平方向边缘 垂直水平方向的Prewitt算子是可分离的卷积核。 45、135方向边缘 算子不可分割。 缺点 没有充分利用边缘的梯度方向最后输出的边缘二值图,只是简单地利用阈值进行处理。如果阈值过大,则会损失很多边缘信息;如果阈值过…

数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)

目录 1 边缘检测的基本原理 2 边缘检测算子分类 3 梯度 3.1 图像梯度 3.2 梯度算子 4 Roberts 算子 4.1 基本原理 4.2 代码示例 5 Prewitt 算子 5.1 基本原理 5.2 代码示例 6 Sobel 算子 6.1 基本原理 6.2 代码示例 7 Laplacian 算子 7.1 基本原理 7.2 代码示…

python数字图像处理——边缘检测算子(Laplacian算子、Roberts算子、Prewitt算子和Sobel算子)

1.Laplacian算子 拉普拉斯(Laplacian)算子是n维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素,基本流程是:判断图像中心像素灰度值与它周围其他像素的灰度值&…

Prewitt算子边缘检测原理及实现

写在前面 Prewitt算子同样也是一种一阶微分算子,利用像素点上下左右邻点灰度差,在边缘处达到极值检测边缘,对噪声具有平滑的作用。 原理 其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测…

Prewitt和Sobel算子

在3*3模板中: 我如下定义水平、垂直和两对角线方向的梯度: 该定义下的算子称之为Prewitt算子: Sobel算子是在Prewitt算子的基础上改进的,在中心系数上使用一个权值2,相比较Prewitt算子,Sobel模板能够较好…

Prewitt边缘检测算子

Prewitt算子也是一种一阶微分算子,用于边缘检测。与Robert使用22的模板不同,Prewitt算子使用的是33的模板,利用像素点上下、左右邻点的灰度差来检测边缘,故其边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。 其数学表…

图像边缘检测之Prewitt算子

Prewitt 算子 1. 原理 Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 3x3 模板对区域内的像素值进行计算,而Robert算子的模板为 2x2,故Prewitt算子的边缘检测结果…

华为--配置本地环回接口地址

该实验紧接上一节实验 网络拓扑图如下 AR1环回接口配置 AR2环回接口配置 AR3环回接口配置 配置AR1回环接口路由 配置AR2回环接口路由 配置AR3回环接口路由 在AR1上测试回环接口的连通性 在AR2上测试回环接口的连通性 在AR3上测试回环接口的连通性 测试成功 转载于:https://my.o…

【LINUX】ifconfig只有本地环回地址问题的解决方法

问题描述: ifconfig只有lo,没有看到ens33 ifconfig -a看到了ens33,但是没有地址 解决方法: (1)stop network-manager sudo service network-manager stop (2)删除旧有的网络配置…

怎么判断一个ipv4地址是 私有地址,环回地址,实验地址,TEST-NET地址,本地链路地址?

问题的提出: 理论讲解(黄色的为上题的答案): IP地址分为五类: A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳…

回环地址 127.0.0.1

控制台输入ping 127.0.0.1。 $ ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq0 ttl64 time0.080 ms 64 bytes from 127.0.0.1: icmp_seq1 ttl64 time0.093 ms 64 bytes from 127.0.0.1: icmp_seq2 ttl64 time0.074 ms 64 byte…

环回接口 环回地址 环回路由

网络协议的数据链路层的一些重点我们来讲解一下。这此我们主要讲解的是环回接口的问题。环回接口(loopback):路由器上的一个逻辑、虚拟接口.路由器默认没有任何环回接口.此接口允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信.一般系统…

什么是环回接口(Loopback Interface、环回地址)

2.7 环回接口 大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。 A类网络号 127就是为环回接口预留的。根据惯例,大多数系统把 IP地址127.0.0.1分配给这个接…

特殊IP地址——环回地址

环回地址(Loopback Address)127.0.0.1---127.255.255.254 是一种特殊的 IP 地址,它允许计算机的软件组件在本地主机上进行网络通信,也称作本地回环地址。 在计算机网络中,环回地址是一个虚拟地址,它不属于任…

“谁告诉你环回地址就是127.0.0.1?” “老师就是这么说的。”

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》 环回地址是本地的「虚拟接口」,默认不会宕掉。 我们经…

带头结点单链表、不带头结点单链表(头指针单链表)

1、头结点和头指针的区别 1.1区别: 头指针表明了链表的结点,可以唯一确定一个单链表。 头指针指向链表的第一个结点,其记录第一个存储数据的结点的地址。 头结点是点链表的第一个结点,若单链表有头结点,则头指针指向头…

不带头结点的单链表------C语言实现

1 /****************************************************/ 3 File name:no_head_link.c4 Author:SimonKly Version:0.1 Date: 2017.5.205 Description:不带头节点的单链表6 Funcion List: 7 ***************************************…