图像数据处理19

news2024/11/15 9:32:51

四、形态学图像处理

4.6 灰度图像的形态学处理

4.6.1灰度图像的腐蚀操作

灰度图像的腐蚀处理会让图像整体变暗,增强较暗的细节,抑制较亮的细节。其有助于分割图像、平滑图像边缘。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('fu.jpg', cv2.IMREAD_GRAYSCALE)

# 检查图像是否成功加载
if image is None:
    print("Error: Image could not be read.")
    exit()

# 定义腐蚀操作的结构元素
kernel = np.ones((5, 5), np.uint8)

# 进行腐蚀操作
erosion_image = cv2.erode(image, kernel, iterations=1)

# 将原图缩小一半
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5)

# 将腐蚀后的图像缩小一半
resized_erosion_image = cv2.resize(erosion_image, None, fx=0.5, fy=0.5)

# 显示原图
cv2.imshow('Original Image', resized_image)

# 显示腐蚀后的图像
cv2.imshow('Erosion Image', resized_erosion_image)

# 等待按键操作后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

4.6.2灰度图像的膨胀操作

灰度图像的膨胀处理会让图像整体变亮,增强较量的细节,抑制较暗的细节。其有助于填补图像中的空洞,连接相邻物体。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('fu.jpg', cv2.IMREAD_GRAYSCALE)

# 检查图像是否成功加载
if image is None:
    print("Error: Image could not be read.")
    exit()

# 定义膨胀操作的结构元素
kernel = np.ones((5, 5), np.uint8)

# 进行膨胀操作
dilation_image = cv2.dilate(image, kernel, iterations=1)

# 将原图缩小一半
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5)

# 将膨胀后的图像缩小一半
resized_dilation_image = cv2.resize(dilation_image, None, fx=0.5, fy=0.5)

# 显示原图
cv2.imshow('Original Image', resized_image)

# 显示膨胀后的图像
cv2.imshow('Dilation Image', resized_dilation_image)

# 等待按键操作后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

4.6.3灰度图像的开运算、闭运算

灰度图像的开运算闭运算与二值图像的定义相同,开运算使先腐蚀再膨胀,闭运算则是先膨胀再腐蚀。

灰度图像的开运算可以去除亮点噪声,其先通过腐蚀操作去除亮点,再通过膨胀操作恢复图像亮度,而被去除的亮点无法通过膨胀操作复原。

灰度图像闭运算可以消除图像小孔。其先通过膨胀操作扩展了图像中的亮区域,填充了原本存在的小孔洞或空白的区域。随后,经过腐蚀操作使图像恢复原来的亮度,腐蚀操作虽然在一定程度上缩小了亮区域的范围,但由于膨胀操作已经填充了孔洞,因此腐蚀操作并不会消除这些填充效果。

开运算

import cv2
import numpy as np

# 读取图像
image = cv2.imread('fu.jpg', cv2.IMREAD_GRAYSCALE)

# 检查图像是否成功加载
if image is None:
    print("Error: Image could not be read.")
    exit()

# 定义结构元素
kernel = np.ones((5, 5), np.uint8)

# 进行开运算操作:先腐蚀后膨胀
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

# 将原图缩小一半
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5)

# 将开运算后的图像缩小一半
resized_opened_image = cv2.resize(opened_image, None, fx=0.5, fy=0.5)

# 显示原图
cv2.imshow('Original Image', resized_image)

# 显示开运算后的图像
cv2.imshow('Opened Image', resized_opened_image)

# 等待按键操作后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

闭运算

import cv2
import numpy as np

# 读取图像
image = cv2.imread('fu.jpg', cv2.IMREAD_GRAYSCALE)

# 检查图像是否成功加载
if image is None:
    print("Error: Image could not be read.")
    exit()

# 定义结构元素
kernel = np.ones((5, 5), np.uint8)

# 进行闭运算操作:先膨胀后腐蚀
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

# 将原图缩小一半
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5)

# 将闭运算后的图像缩小一半
resized_closed_image = cv2.resize(closed_image, None, fx=0.5, fy=0.5)

# 显示原图
cv2.imshow('Original Image', resized_image)

# 显示闭运算后的图像
cv2.imshow('Closed Image', resized_closed_image)

# 等待按键操作后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

注:本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

本文的内容主要基于我对张运楚教授编著的《数字图像处理》一书的学习和理解。这本书深入浅出地介绍了数字图像处理的基本理论以及经典算法等,并且提供了丰富的示例代码和实际用例,极大地帮助了我学习图像处理知识。在此,我推荐大家阅读这本书,更加深入的学习有关图像处理的知识。

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

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

相关文章

魔珐科技出席WWEC教育者大会,给出AI时代教培行业精细化运营赋能方案

AI与教育的结合,已经成为教育行业发展的关键增长点。头部机构纷纷寻求AI技术与产品融合,以增强市场竞争力,希望在这场技术引发的行业洗牌中保持领先。 喜忧之中,展望未来,教培机构如何继续找准航向,贴近政…

表格解析调研

表格解析调研 TextInTools TextInTools:https://tools.textin.com/table 可以将表格图片解析成可编辑的表格/json,效果不错 白描 地址:https://web.baimiaoapp.com/image-to-excel 可以将表格图片识别成可编辑的表格,可复制、…

OpenCV4特征匹配

目录 一.特征检测的基本概念二.Harris角点检测三.Shi-Tomasi角点检测四.SIFT关键点检测五.SURF特征检测(属于opencv_contrib)六.ORB特征检测七.特征匹配方法八.FLANN特征匹配 流程梳理 一.特征检测的基本概念 OpenCV特征的场景 1.图像搜索,…

“论软件的可靠性评价”写作框架,软考高级,系统架构设计师

论文真题 软件可靠性评价是软件可靠性活动的重要组成部分,既适用于软件开发过程,也可针对最终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否可以终止测试并…

数据结构与算法(算法篇)

学数据结构与算法不是仅仅学算法本身(经验),而是学习思维(解决问题的能力)。 数据结构与算法(算法篇) 1、算法的性能分析1.1 时间复杂度1.2 空间复杂度1.3 小结 2、高精度2.1 高精度加法2.2 高精度减法2.3…

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 一次开发,多端部署

一、学习目的 掌握鸿蒙的核心概念和端云一体化开发、数据、网络、媒体、并发、分布式、多设备协同等关键技术能力,具备独立设计和开发鸿蒙应用能力。 二、总体介绍 HarmonyOS 系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一…

win双击运行jar文件

常规运行:java -jar xxx.jar 方法一、 1、jar包右键属性 2、更改打开方式,设置为默认 选择打开方式使用 javaw.exe C:\Program Files\Java\jdk1.8.0_201\bin\javaw.exe 3、修改注册表 winr 中 regedit 打开注册表 计算机\HKEY_CLASSES_ROOT\Appli…

同态加密及HElib

一、实验原理 1.同态加密概念 同态加密是密码学领域自1978年以来的经典难题,也是实现数据隐私计算的关键技术,在云计算、区块链、隐私计算等领域均存在着广泛的应用需求和一些可行的应用方案。 同态加密(Homomorphic Encryption)是很早之前密码学界就提出来的一个Open Pr…

Java Web —— 第七天(Mybatis案例1)

环境搭建 准备数据库表(dept、emp) -- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null commen…

Ubuntu24.04安装MYSQL8.0

更新源 sudo apt update安装mysql服务 默认安装最新版本 sudo apt install mysql-server检查安装版本 mysql --version检查mysql运行状态 systemctl status mysql开启远程访问,在ubuntu下mysql默认是只允许本地访问 sudo vim /etc/mysql/mysql.conf.d/mysqld.…

jdbc连接池之C3P0

C3P0:JDBC 连接池概述 C3P0 是一个开源的 JDBC 连接池库,用于管理数据库连接的获取与释放。它提供了连接池的自动管理和高效复用,从而减少了创建数据库连接所需的时间和资源消耗。C3P0 的核心功能是优化和管理数据库连接,以提高应…

python : Requests请求库入门使用指南 + 简单爬取豆瓣影评

Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说,Requests 是一个非常有用的工具。在今天的博…

如何取消Excel表格的“打开密码”

在日常工作和学习中,Excel表格作为一种强大的数据处理工具,被广泛应用。而我们为了保护excel文件中的数据,会为Excel设置打开密码,但随着时间和需求的变化,当我们需要取消密码保护时要怎么做呢? 方法一&…

【前端基础篇】HTML零基础速通

文章目录 前言HTML结构认识HTML标签 HTML文件基本结构标签层次结构 快速生成代码框架HTML常见标签注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签表格标签基本使用合并单元格 列表标签表单标签form标签input标签 label标签select标签textarea标签无语义标签 HT…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻,那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注,建议先查看相关信息,知晓本文背景。】 在物联网系统的建构中,安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

AgileTC测试用例管理平台的基本使用

1. 背景 使用企业微信在线文档对测试用例进行管理,存在以下问题,比如新建版本,每次都要设置下执行测试用例那一栏,要提供通过、失败、阻塞等选项,操作异常繁琐,比如版本管理问题,多个版本之后&a…

【企业高性能web服务器】

目录 一、Nginx 介绍1、 Nginx 功能介绍2、基础特性3、Nginx 模块介绍 二、Nginx 编译安装1、编写systemd服务 三、平滑升级和回滚1、平滑升级的流程2、升级2、回滚 四、 Nginx 核心配置详解1、实现 nginx 的高并发配置2、Nginx 账户认证功能3、nginx作为下载服务器配置 五、re…

为了改善您的网络安全状况,请专注于数据

有效地融合、管理和使用企业数据是一项艰巨的任务。企业拥有大量的数据,但这些数据存在于各自为政的系统和应用程序中,需要高技能的数据科学家进行大量的手动操作。工程师和分析师从所有数据中提取价值。 数据准备是一项基本且必要的任务,但…

IOS 11 通用Base控制器封装

整体规划 BaseController:把viewDidLoad逻辑拆分为三个方法,方便管理。 BaseCommonController:不同项目可以复用的逻辑,例如:设置背景颜色方法等 BaseLogicController:本项目的通用逻辑,主要…

Spring的核心启动流程

前言 Spring启动时候整个入口是这么一个方法 AbstractApplicationContext#refresh 总共有12个方法,也就是启动时的核心步骤 AbstractApplicationContext有众多实现,这里我选择SpringBoot Web应用默认的实现来讲 AnnotationConfigServletWebServerAppli…