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

环境: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、权重归一化:为了确保滤波后像素值保持在有效的范围内,需要对高斯权重进行归一化处理,使得所有权重加起来等于1。

5、应用效果:高斯低通滤波器非常适合用于减少图像中的随机噪声,尤其是服从正态分布的高斯噪声。由于其平滑特性,它还常用于图像的边缘检测、特征提取前的预处理等场景。

6、优缺点:对高斯噪声的滤除非常有效;但平滑程度越大,图像越模糊。

高斯低通滤波以其独特的平滑特性在图像处理领域中占有重要地位,尤其适用于需要在保留图像整体特征的同时去除噪点和细节干扰的场景。

二、算法流程

(以单波段图像为例)

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

2、高斯低通滤波的具体操作是:用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值,高斯滤波的结果和高斯分布的标准差σ有关,σ越大,平滑效果越好,如图所示为一个标准差σ为0.9的高斯卷积模板

 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/02/ 16:48* @Attention: 转载, 引用请注明出处*/public class GaussianFiltering {//加载本地动态链接库static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}//高斯低通滤波public Mat gaussianFilter(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];}}//用3×3窗口进行高斯低通滤波//卷积核为:1/16×[[1,2,1][2,4,2][1,2,1]]int[][] mat_arr_gaussianFilter = 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_gaussianFilter[i][j] = (int) ((1.0 / 16)* (mat_arr[i - 1][j - 1] + mat_arr[i - 1][j] * 2 + mat_arr[i - 1][j + 1]+ mat_arr[i][j - 1] * 2 + mat_arr[i][j] * 4 + mat_arr[i][j + 1] * 2+ mat_arr[i + 1][j - 1] + mat_arr[i + 1][j] * 2 + mat_arr[i + 1][j + 1]));} else {    //处理边缘像素mat_arr_gaussianFilter[i][j] = mat_arr[i][j];}}}//合成图像Mat mat_gaussianFilter = new Mat(rows, cols, CvType.CV_32SC1);//将像素放入图像for (int i = 0; i < rows; i++) {//一次放入一行像素值mat_gaussianFilter.put(i, 0, mat_arr_gaussianFilter[i]);}return mat_gaussianFilter;}public static void main(String[] args) {GaussianFiltering gf = new GaussianFiltering();Mat mat = gf.gaussianFilter("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray.png");//将高斯低通滤波后的图像写入文件Imgcodecs.imwrite("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray_gf.png", mat);}
}

四、实验结果

 1、读入的图像

 2、经过高斯滤波后的图像

经过高斯低通滤波的图像变得模糊,即能够有效的抑制噪声,平滑图像

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1997.访问完所有房间的第一天:动态规划(DP)——4行主要代码(不需要什么前缀和)

【LetMeFly】1997.访问完所有房间的第一天&#xff1a;动态规划(DP)——4行主要代码(不需要什么前缀和) 力扣题目链接&#xff1a;https://leetcode.cn/problems/first-day-where-you-have-been-in-all-the-rooms/ 你需要访问 n 个房间&#xff0c;房间从 0 到 n - 1 编号。同…

JAX 来构建一个基本的人工神经网络(ANN)进行分类任务

import jax.numpy as jnp from jax import grad, jit, vmap from jax import random from jax.experimental import optimizers from jax.nn import relu, softmax# 构建神经网络模型 def neural_network(params, x):for W, b in params:x jnp.dot(x, W) bx relu(x)return s…

Flask学习(六):蓝图(Blueprint)

蓝图&#xff08;Blueprint&#xff09;&#xff1a;将各个业务进行区分&#xff0c;然后每一个业务单元可以独立维护&#xff0c;Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法&#xff0c;它并不是必须要实现应用的视图和函数的。 Demo目录结构&#xf…

常见panic场景 (空指针、越界、断言、map相关panic)

在Go语言中&#xff0c;panic是一个内建函数&#xff0c;用于在遇到无法继续执行的错误条件时中断当前函数的执行。panic可以由开发者显式调用&#xff0c;也可能由运行时错误触发。以下是一些常见的panic场景&#xff1a; 空指针解引用 当尝试通过一个nil指针访问其指向的值时…

linux离线安装jenkins及使用教程

本教程采用jenkins.war的方式离线安装部署&#xff0c;在线下载的方式会遇到诸多问题&#xff0c;不宜采用 一、下载地址 地址&#xff1a;Jenkins download and deployment 下载最新的长期支持版 由于jenkins使用java开发的&#xff0c;所以需要安装的linux服务器装有jdk环…

插入排序、归并排序、堆排序和快速排序的稳定性分析

插入排序、归并排序、堆排序和快速排序的稳定性分析 一、插入排序的稳定性二、归并排序的稳定性三、堆排序的稳定性四、快速排序的稳定性总结在计算机科学中,排序是将一组数据按照特定顺序进行排列的过程。排序算法的效率和稳定性是评价其优劣的两个重要指标。稳定性指的是在排…

新版Idea2023.3.5与lombok冲突、@Data失效

新版idea和lombok冲突&#xff0c;加上Data&#xff0c;其他地方get set也不报错&#xff0c;但是一运行就找不到get set方法。 但是直接使用Getter和Setter可以访问、应该是Data失效了。 解决方法&#xff1a; 看推上介绍是 lombok 与 idea 采集 get 、set 方法的时候所用的技…

maya pycharm运行 重定向

目录 maya sdk下载: maya测试代码: 添加sdk 依赖库: pycharm连接 maya 测试ok

day7|错误恢复

其实就是由于越界等问题所导致的panic,我们该如何解决 文中提到了两个方法&#xff0c;一种是使用defer&#xff0c;推迟错误的执行 第二种&#xff1a;recover函数 &#xff08;需要在defer里面生效&#xff09;可以避免panic生效而导致整个函数终止 package mainimport &q…

使用 Qlib 在线模式

使用 Qlib 在线模式 简介 Qlib 文档中介绍了离线模式。除此之外,用户还可以使用 Qlib 的在线模式。 在线模式旨在解决以下问题: 集中管理数据,用户无需管理不同版本的数据。减少生成的缓存量。使数据可以远程访问。在在线模式下,Qlib 会通过 Qlib-Server 以集中方式管理…

Jupyter开启远程服务器(最新版)

Jupyter Notebook 在本地进行访问时比较简单&#xff0c;直接在cmd命令行下输入 jupyter notebook 即可&#xff0c;然而notebook的作用不止于此&#xff0c;还可以用于远程连接服务器&#xff0c;这样如果你有一台服务器内存很大&#xff0c;但是呢你又不喜欢在linux上进行操作…

【C语言】编译和链接----预处理详解【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言】文件操作揭秘&#xff1a;C语言中文件的顺序读写、随机读写、判断文件结束和文件缓冲区详细解析【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 欢迎来到本篇博客&…

如何备考2025年AMC8竞赛?吃透2000-2024年600道真题(免费送题)

最近有家长朋友问我&#xff0c;现在有哪些类似于奥数的比赛可以参加&#xff1f;我的建议可以关注下AMC8的竞赛&#xff0c;类似于国内的奥数&#xff0c;但是其难度要比国内的奥数低一些&#xff0c;而且比赛门槛更低&#xff0c;考试也更方便。比赛的题目尤其是应用题比较有…

78.子集90.子集2

78.子集 思路 又回到了组合的模板中来&#xff0c;这道题相比于前面的题省去了递归终止条件。大差不差。 代码 class Solution {List<List<Integer>> result new ArrayList<>();LinkedList<Integer> listnew LinkedList<>();public List<…

Redis开源协议变更!Garnet:微软开源代替方案?

Garnet&#xff1a;微软开源的高性能替代方案&#xff0c;秉承兼容 RESP 协议的同时&#xff0c;以卓越性能和无缝迁移能力重新定义分布式缓存存储&#xff01; - 精选真开源&#xff0c;释放新价值。 概览 最近&#xff0c;Redis修改了开源协议&#xff0c;从BSD变成了 SSPLv…

第二十一章 Jquery ajax

文章目录 1. jquery下载2. jquery的使用3. jquery页面加载完毕执行4. jquery属性控制6. 遍历器 2. ajax1. 准备后台服务器2. ajax发送get请求3. ajax发送post请求 1. jquery下载 点击下载 稳定版本1.9 2. jquery的使用 存放到html文件的同级目录 3. jquery页面加载完毕执行…

Unity | 射线检测及EventSystem总结

目录 一、知识概述 1.Input.mousePosition 2.Camera.ScreenToWorldPoint 3.Camera.ScreenPointToRay 4.Physics2D.Raycast 二、射线相关 1.3D&#xff08;包括UI&#xff09;、射线与ScreenPointToRay 2.3D&#xff08;包括UI&#xff09;、射线与ScreenToWorldPoint …

Linux安装redis(基于CentOS系统,Ubuntu也可参考)

前言&#xff1a;本文内容为实操记录&#xff0c;仅供参考&#xff01; 一、下载并解压Redis 1、执行下面的命令下载redis&#xff1a;wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis&#xff1a;tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…

【QT学习笔记】qt配置快捷键:全局快捷键|应用程序中的快捷键

在Qt Creator中配置快捷键&#xff0c;可以通过以下步骤进行&#xff1a; 配置全局快捷键&#xff08;适用于整个IDE的操作&#xff09;&#xff1a; 1. **打开快捷键设置**&#xff1a; - 打开Qt Creator&#xff0c;点击顶部菜单栏的“工具”(Tools)。 - 在下拉菜单中…

“直播曝光“有哪些媒体直播分流资源?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 我们线下举办活动时&#xff0c;往往希望活动进行更大的曝光&#xff0c;随着视频直播越来越被大众认可&#xff0c;甚至成了活动的标配&#xff0c;那么做活动视频直播的时候&#xff0…