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

环境: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、优缺点:能对任何走向的界线和线条进行锐化,无方向性;但对噪声比较敏感,会放大噪声。

拉普拉斯梯度锐化通过对图像进行二次微分处理,强化了图像的边缘及细节信息,有助于提升图像的清晰度和可识别性。

二、算法流程

(以单波段图像为例)

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

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/05/ 15:29
 * @Attention: 转载, 引用请注明出处
 */

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

    //拉普拉斯算子
    public Mat laplaceSharping(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];
            }
        }

        //使用拉普拉斯算子进行锐化
        int[][] mat_arr_laplaceSharp = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                //处理非边缘的像素
                if (i != 0 && i != rows - 1 && j != 0 && j != cols - 1) {
                    mat_arr_laplaceSharp[i][j] = (mat_arr[i - 1][j] + mat_arr[i][j - 1]
                            + mat_arr[i][j + 1] + mat_arr[i + 1][j] - mat_arr[i][j] * 4);
                } else {    //处理边缘像素
                    mat_arr_laplaceSharp[i][j] = mat_arr[i][j];
                }
            }
        }

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

    public static void main(String[] args) {
        LaplaceOperator lo = new LaplaceOperator();
        Mat mat = lo.laplaceSharping("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray.png");
        //将经过拉普拉斯锐化后的图像写入文件
        Imgcodecs.imwrite("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray_lo.png", mat);
    }
}

四、实验结果 

1、读入的图像

2、经过拉普拉斯算子处理后的图像

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

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

相关文章

U盘位置不可用,如何轻松应对数据恢复难题

在日常工作和生活中&#xff0c;U盘作为一种便捷的存储设备&#xff0c;经常被用于数据传输和备份。然而&#xff0c;有时我们可能会遇到这样一个问题&#xff1a;当插入U盘时&#xff0c;系统提示“位置不可用”或“无法访问”&#xff0c;这让人倍感困扰。面对这种情况&#…

JavaScript:快速入门

1. 数据类型 /** * 数据类型: number(包含整数、小数) * string&#xff08;字符串类型&#xff09; * boolean&#xff08;布尔类型&#xff09; * object&#xff08;对象类型&#xff09; * function&#xff08;函数类型&#xff09; …

使用python将pdf插入到docx中

from pdf2image import convert_from_path from docx import Document from docx.shared import Inches,Cm# 将PDF转换为图片 pages convert_from_path(4.pdf, 200) # 200是DPI&#xff0c;可以根据需要调整doc Document()# 计算图片在docx中应该显示的宽度 img_width Cm(2…

单细胞RNA测序(scRNA-seq)细胞分离与扩增

单细胞RNA测序入门可以查看以下文章&#xff1a; 单细胞RNA测序&#xff08;scRNA-seq&#xff09;工作流程入门 1. 单细胞的分离 如何获得单细胞&#xff0c;从而进行下一步的测序过程&#xff1f;具体有以下几种方法&#xff1a; 一、流式细胞仪(FACS)方法 常用的方法之…

深度学习基础模型之Mamba

Mamba模型简介 问题&#xff1a;许多亚二次时间架构(运行时间复杂度低于O(n^2)&#xff0c;但高于O(n)的情况)&#xff08;例如线性注意力、门控卷积和循环模型以及结构化状态空间模型&#xff08;SSM&#xff09;&#xff09;已被开发出来&#xff0c;以解决 Transformer 在长…

LabVIEW转动设备故障诊断系统

LabVIEW转动设备故障诊断系统 随着工业自动化技术的不断进步&#xff0c;转动设备在电力、化工、船舶等多个行业中扮演着越来越重要的角色。然而&#xff0c;这些设备在长期运行过程中难免会出现故障&#xff0c;如果不能及时诊断和处理&#xff0c;将会导致生产效率下降&…

05. 【Android教程】Android 程序签名打包

在上一章&#xff0c;我们创建了自己的 Android 工程&#xff0c;并成功的在模拟器中运行起来。同时提到&#xff0c;工程目录中有一个 bin 目录&#xff0c;运行之后我们可以在此目录下找到我们的 apk。那么不难想到&#xff0c;我们在点“Run”之后&#xff0c;系统会编译我们…

[技术笔记] Flash选型之基础知识芯片分类

1、按照接口分类 分为 Serial串口Flash 和 Parallel并口Flash&#xff1b; 市场大量使用Serial Flash&#xff1b;价格便宜&#xff1b;已满足系统对数据读写速度的要求&#xff1b; Serial Flash已经可以代表 NOR Flash&#xff1b; 小知识&#xff1a; 1&#xff09;在…

深度学习算法概念介绍

前言 深度学习算法是一类基于人工神经网络的机器学习方法&#xff0c;其核心思想是通过多层次的非线性变换&#xff0c;从数据中学习表示层次特征&#xff0c;从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功&#xf…

Linux基础篇:VMware虚拟机3种常用的网络模式介绍

VMware虚拟机3种常用的网络模式介绍 VMware虚拟机提供了几种不同的网络连接模式&#xff0c;以满足不同场景下的网络需求。以下是VMware虚拟机的三种主要网络模式&#xff1a; 1.桥接模式&#xff08;Bridged Mode&#xff09;网卡名称VMnet0 桥接模式允许虚拟机直接连接到物…

鸿蒙OS开发实例:【瀑布流式图片浏览】

介绍 瀑布流式展示图片文字&#xff0c;在当前产品设计中已非常常见&#xff0c;本篇将介绍关于WaterFlow的图片浏览场景&#xff0c;顺便集成Video控件&#xff0c;以提高实践的趣味性 准备 请参照[官方指导]&#xff0c;创建一个Demo工程&#xff0c;选择Stage模型熟读Har…

解决前后端通信跨域问题

因为浏览器具有同源策略的效应。 同源策略是一个重要的网络安全机制&#xff0c;用于Web浏览器中&#xff0c;以防止一个网页文档或脚本来自一个源&#xff08;域、协议和端口&#xff09;&#xff0c;获取另一个源的数据。同源策略的目的是保护用户的隐私和安全&#xff0c;防…

PostgreSQL到Doris的迁移技巧:实时数据同步新选择!

PostgreSQL可以说是目前比较抢手的关系型数据库了&#xff0c;除了兼具多样功能和强大性能之外&#xff0c;还具备非常优秀的可扩展性&#xff0c;更重要的是它还开源&#xff0c;能火不是没有理由的。 虽然PostgreSQL很强大&#xff0c;但是它也有短板&#xff0c;相对于专业…

【Java数据结构】关于栈的操作出栈,压栈,中缀表达式,后缀表达式,逆波兰表达式详解

&#x1f525;个人主页&#xff1a;努力学编程’ &#x1f525;内容管理&#xff1a;java数据结构 上一篇文章我们讲过了java数据结构的链表&#xff0c;对于链表我们使用了它的一些基本操作&#xff0c;完成了扑克牌小游戏的操作&#xff0c;如果你感兴趣的话&#xff0c;点…

数组类模板(进阶版)

目录 介绍&#xff1a; 分析&#xff1a; 实现&#xff1a; .hpp框架创建 .hpp函数内容 有参构造 拷贝构造&#xff1a; 重载 插入数据 删除数据 通过下标访问 获取数组大小 获取数组容量 析构函数 .cpp框架 int类型数据测试 char类型测试 总代码 .hpp代码 …

是德科技keysight N9000B 信号分析仪

181/2461/8938产品概述&#xff1a; 工程的内涵就是将各种创意有机地联系起来&#xff0c;并解决遇到的问题。 CXA 信号分析仪具有出色的实际性能&#xff0c;它是一款出类拔萃、经济高效的基本信号表征工具。 它的功能十分强大&#xff0c;为一般用途和教育行业的用户执行测试…

wireshark 使用

wireshark介绍 wireshak可以抓取经过主机网卡的所有数据包&#xff08;包括虚拟机使用的虚拟网卡的数据包&#xff09;。 环境安装 安装wireshark: https://blog.csdn.net/Eoning/article/details/132141665 安装网络助手工具&#xff1a;https://soft.3dmgame.com/down/213…

【LIMS】CMA与CNAS:中国认证体系中的两大支柱

目录 一、CMA&#xff1a;[中国计量认证](http://cma-cma.org.cn/)什么是CMA&#xff1f;CMA的作用 二、CNAS&#xff1a;[中国合格评定国家认可委员会](https://www.cnas.org.cn/)什么是CNAS&#xff1f;CNAS的作用 三、CMA与CNAS的关系相互促进共同目标 结语系列文章版本记录…

TCP网络协议栈和Posix网络部分API总结

文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手&#xff08;看下图&#xff09;三次握手常见问题&#xff1f;为什么是三次握手而不是两次&#xff1f;三次握手和哪些函数有关&#xff1f;TCP的生命周期是从什么时候开始的&#xff1f; 四次挥手通信状态…

git基本操作二(小白快速上手)

1、前言 接上篇我们接着来继续讲 2、.gitignore忽略文件 创建一个.gitignore文件&#xff0c;并将其置于项目的根目录下&#xff0c;Git将自动识别并根据该规则忽略相应的文件和目录。 # 忽略所有的 .log 文件 *.log# 但跟踪所有的 build.log 文件 !build.log# 忽略所有的 /lo…