(十一)图像的罗伯特梯度锐化

环境:Windows10专业版 + IDEA2021.2.3 + jdk11.0.1 + OpenCV-460.jar

系列文章:

(一)Python+GDAL实现BSQ,BIP,BIL格式的相互转换

(二)BSQ,BIL,BIP存储格式的相互转换算法

(三)单波段图像的伪彩色合成:密度分割(含介绍OpenCV中的Mat类)

(四)图像的%2线性拉伸

(五)图像的标准假彩色合成

(六)图像的直方图均衡化

(七)图像的均值滤波

(八)图像的中值滤波

(九)图像的高斯低通滤波

(十)图像的梯度倒数加权平滑

(十一)图像的罗伯特梯度锐化

(十二)图像的Sobel梯度锐化

(十三)图像的拉普拉斯梯度锐化

目录

一、罗伯特梯度锐化简介 

二、算法流程

三、代码实现

四、实验结果

1、读入的图像

2、经过罗伯特梯度处理后的图像


一、罗伯特梯度锐化简介 

图像的罗伯特梯度锐化是一种基于梯度的图像处理方法,主要用于增强图像的边缘和细节

罗伯特梯度锐化方法主要包括以下几个步骤:

1、噪声减少:在进行锐化处理之前,通常需要先对图像进行平滑处理,以减少噪声的影响。这是通过使用高斯滤波器或其他平滑技术来实现的。

2、边缘检测:罗伯特梯度锐化是通过计算图像在水平和垂直方向上的梯度大小和方向来检测边缘的。罗伯特算子利用交叉微分来计算像素点处的梯度强度和方向。

3、梯度计算:罗伯特交叉算子定义为两个模板,一个用于水平方向的边缘检测,另一个用于垂直方向。通过这两个模板的应用,可以计算出图像的梯度图像。

4、图像锐化:根据计算出的梯度信息,可以增强图像的边缘和细节,从而使模糊的图像变得更加清晰。

5、注意信噪比:在进行图像锐化时,需要注意处理的图像必须有较高的信噪比,否则锐化过程可能会放大噪声,影响图像质量。

6、边缘提取:除了锐化,罗伯特算子也常用于图像的边缘提取,这有助于进一步分析图像内容。

罗伯特梯度锐化是一种有效的图像处理技术,它通过增强图像的边缘和细节来提高图像的清晰度,适用于各种需要改善图像质量的应用场景。

二、算法流程

(以单波段灰度图像为例) 

1、利用OpenCV读入图像,将像素存储在数组里

2、用方向1模板计算后取绝对值再加上方向2模板计算后取绝对值

3、将经过罗伯特梯度处理后的像素值存入数组合成图像并存储

三、代码实现

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

/**
 * @Author: HNUST_jue_chen
 * @Date: 2022/11/03/ 21:23
 * @Attention: 转载, 引用请注明出处
 */

public class RobertGradient {
    //加载本地动态链接库
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    //罗伯特梯度锐化
    public Mat robertSharping(String path) {
        //使用Mat类存储图像信息
        Mat mat = Imgcodecs.imread(path);
        //图像的大小
        int rows = mat.rows();
        int cols = mat.cols();

        //获得原图像像素数组
        int[][] mat_arr = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                mat_arr[i][j] = (int) mat.get(i, j)[0];
            }
        }

        //用2×2窗口进行滤波
        int[][] mat_arr_robertSharp = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                //处理非最后一行和非最后一列的像素
                if (i != rows - 1 && j != cols - 1) {
                    //中心像素的2×2窗口
                    int[][] temp = new int[2][2];
                    temp[0][0] = mat_arr[i][j];
                    temp[0][1] = mat_arr[i][j + 1];
                    temp[1][0] = mat_arr[i + 1][j];
                    temp[1][1] = mat_arr[i + 1][j + 1];
                    mat_arr_robertSharp[i][j] = Math.abs(temp[0][0] - temp[1][1])
                                                + Math.abs(temp[0][1] - temp[1][0]);
                } else {    //处理最后一行和最后一列的像素
                    mat_arr_robertSharp[i][j] = mat_arr[i][j];
                }
            }
        }

        //合成图像
        Mat mat_robertSharp = new Mat(rows, cols, CvType.CV_32SC1);
        //将像素放入图像
        for (int i = 0; i < rows; i++) {
            //一次放入一行像素值
            mat_robertSharp.put(i, 0, mat_arr_robertSharp[i]);
        }

        return mat_robertSharp;

    }

    public static void main(String[] args) {
        RobertGradient rg = new RobertGradient();
        Mat mat = rg.robertSharping("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray.png");
        //将经过罗伯特梯度锐化后的图像写入文件
        Imgcodecs.imwrite("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray_rg.png", mat);
    }
}

四、实验结果

1、读入的图像

2、经过罗伯特梯度处理后的图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/501566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows无法使用hadoop报错:系统找不到路径

在windows下安装hadoop-3.1.4,进行环境变量配置后&#xff0c;打开window命令行窗口测试hadoop命令&#xff0c;报错&#xff0c;如图所示&#xff1a; 方案&#xff1a;由于JAVA_HOME路径有空格导致&#xff0c;可修改hadoop下\etc\hadoop\hadoop_env.cmd文档中set JAVA_HOME以…

Beans模块之工厂模块DisposableBean

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

【软件工程导论】——Visio与StarUML的安装

目录 &#x1f552; 1. Visio&#x1f552; 2. StarUML &#x1f552; 1. Visio 1、下载Office Tool Plus并安装&#xff1a;&#x1f50e; Office Tool Plus官网 2、打开软件 → 部署 → 添加产品 3、这里我选择Visio 2021 专业版 LTSC&#xff0c;确定&#xff0c;随后点击“…

ABAP AMDP 示例

AMDP 是HANA开发中的一种优化模式 按SAP的官方建议&#xff0c;在可以使用Open SQL实现需要的功能或优化目标的时候&#xff0c;不建议使用AMDP。而在需要使用Open SQL不支持的特性&#xff0c;或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况…

自动化潮流框架——Playwright 大解密!

一说到自动化测试&#xff0c;第一个反应估计就是Pythonselenium这样的一个组合&#xff0c;其实在2020年的时候市面上就出现了另一个由微软发布的一款UI自动化测试工具&#xff0c;叫Playwright。经过几年的迭代和技术的沉淀&#xff0c;该工具受到越来越多的人重视和青睐。 B…

印度神体系与编程思维

印度神体系中存在三大主神&#xff1a;至高神梵天、毗湿奴以及湿婆。 1.神的类型抽象与神性优先级&#xff1a; 每一个神都掌握着世间中所存在的规律&#xff0c;比如天界里因陀罗&#xff08;帝释天&#xff09;等神掌控风火水电。换句话说&#xff0c;每一个可以抽象出来的世…

5-规范设计(下):commit信息风格迥异、难以阅读,如何规范?

我们在做代码开发时&#xff0c;经常需要提交代码&#xff0c;提交代码时需要填写 Commit Message&#xff08;提交说明&#xff09;&#xff0c;否则就不允许提交。 所以在 Go 项目开发时&#xff0c;一个好的 Commit Message 至关重要&#xff1a; 可以使自己或者其他开发人…

U盘文件突然消失?原因与恢复策略全解析

一、遭遇不测&#xff1a;U盘文件突然消失 在日常生活和工作中&#xff0c;U盘扮演着不可或缺的角色&#xff0c;它小巧便捷&#xff0c;能够随时随地存储和传输文件。然而&#xff0c;有时我们会遭遇一个令人头疼的问题&#xff1a;U盘中的文件突然消失。这种突如其来的变故往…

Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

BBED修复数据损坏引起的数据库崩溃&#xff08;ORA-01092,ORA-00704,ORA-01578&#xff09;(2021年某苏州国企的案例&#xff09; 1.Symptom 用户一个边缘系统出现数据文件损坏&#xff0c;且没有备份&#xff0c;数据库无法启动 报错如下&#xff0c;发现是oracle bootstra…

redis集群配置(精华版):主从复制模式

主从复制模式 概念&#xff1a;作用&#xff1a;为什么使用集群&#xff1a;动手实操1、环境准备2、配置redis.conf配置文件3、再次查看主从节点信息4、验证主从模式 概念&#xff1a; ​ 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器…

29 超级数据查看器 APP视频教程 查询复用

29 超级数据查看器 APP视频教程 查询复用 超级数据查看器 查询复用 最下方有 讲解稿全文 有兴趣的朋友可以看看 超级数据查看器是安卓手机上的APP&#xff0c;软件。 具有导入excel表格数据&#xff0c;存入手机内置的数据库&#xff0c;生成查询模块&#xff0c;快速查询数…

缓存和缓存的常用使用场景

想象一下,一家公司在芬兰 Google Cloud 数据中心的服务器上托管一个网站。对于欧洲用户来说,加载可能需要大约 100 毫秒,但对于墨西哥用户来说,加载需要 3-5 秒。幸运的是,有一些策略可以最大限度地减少远程用户的请求延迟。 这些策略称为缓存和内容交付网络 (CDN),它们是…

线程同步+理解生产者消费者模型

1.线程同步的概念 下面我们来谈一个故事理解线程同步的概念&#xff1a;假设学校里面有一个环境非常好的超级vip自习室是公共的&#xff0c;但是有个前提&#xff0c;一次只能进去一个学生&#xff0c;因为只有一把钥匙挂在超级vip自习室门外的墙上的。假设你是一个学习成绩比…

SuccessFactors 如何通过页面查询后台对应的表

一直以来都习惯SAP的查表方式&#xff0c;一直在想sf能在前台查询表是哪个&#xff0c;今天测试fiori的发现有一个debug工具很好&#xff0c;就是浏览器的F12功能。

hdfs操作java API

1.Configuration类——cof对象 &#xff08;1&#xff09;创建 Configuration conf new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSys…

GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示

GIMP - GNU 图像处理程序 - 工具栏窗口 [Toolbox] 显示 1. File -> Open2. GIMP 主面板里&#xff0c;右击弹出菜单 -> Tools -> New Toolbox3. Windows -> Dockable Dialogs -> Tool Options4. 工具选项拖动到工具箱里面5. Always On TopReferences GIMP 是跨平…

MySQL的InnoDB引擎的事务原理以及MVCC

目录 一、事务原理 二、redo log 三、undo log 四、MVCC 1.基础概念 2.隐藏字段 3.undolog 4.readview 5.原理分析 一、事务原理 1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作…

163.乐理基础-自然小调、音名为何从C开始

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果一章没落下&#xff0c;看到这里&#xff0c;但是看不懂什么意思&#xff0c;那就强行下看&#xff0c;看着看着指不…

UE4_碰撞_射线检测不到物体原因及跳不到圈内的问题

UseSimpleAsComplex 和 UseComplexAsSimple 标记的作用和使用时间。 虚幻引擎 4 中有简单和复杂碰撞形态。 简单碰撞 是基础&#xff0c;如盒体、 球体、胶囊体和凸包。 复杂碰撞 是给定对象的三角网格图。 虚幻引擎 4 会默认创建简单和复杂两种形态&#xff0c;然后基于用户需…