图像处理-图片恢复

article/2025/9/25 6:42:31

目录

一、中值滤波

二、inpaint函数


一、中值滤波

中值滤波是一种非线性的信号处理方法,所以它是一种非线性滤波器,也是一种统计排序滤波器。它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。


目的:中值滤波对孤立的噪声像素即椒盐噪声、脉冲噪声具有良好的滤波效果,可以保持图像的边缘特性,不会使图像产生显著的模糊。


基本原理/思想:中值滤波是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。举个例子:

参考:https://blog.csdn.net/lixiao0314/article/details/120948652

 

 

二、inpaint函数

图像修复是图像恢复中的一个重要内容,其目的是利用图像现有的信息来恢复丢失的信
。可用于旧照片中丢失信息的恢复,视频文字去除以及视频错误隐藏等。

简言之,图像修复就是对图像上信息缺损区域进行信息填充的过程,其目的就是为了对有信息缺损的图像进行恢复,并且使得观察者无法察觉到图像曾经缺损。图像恢复技术简单来说,就是利用那些被破坏区域的边缘,即是边缘的颜色和结构,繁殖和混合到损坏的图像中,来进行恢复图像。
 

目前存在两大类图像修复技术:一类是用于修复小尺度缺损的数字图像修补(inpainting)
技术。即利用待修补区域的边缘信息,同时采用一种由粗到精的方法来估计等照度线的方向,
并采用传播机制将信息传播到待修补的区域内,以便达到较好的修补效果;另外一类是用于
填充图像大块丢失信息的图像补全技术。目前,这一技术分为以下两种方法:一种是基于图
像分解的修复方法,其主要思想是将图像分解为结构部分和纹理部分。其中,结构部分用
inpainting 的技术来修复,而纹理部分则采用纹理合成的方法来填充。另一种方法是用基于
块的纹理合成技术来填充丢失的信息,其主要思想是:首先从待修补区域的边界上选取一个
像素点,同时以该点为中心,根据图像的纹理特征,选择大小合适的纹理块,然后在待修补
区域的周围寻找与之最相近的纹理匹配块来替代该纹理块。近几年来,利用纹理合成来修复
大块丢失信息的图像合成技术取得了一定的研究成果。需要提醒的是,图像修复技术是一种
对视觉感知过程的学习和理解。它是一个不确定问题,没有唯一解的存在,解的合理性取决
于视觉系统的接受程度。换言之,为了达到较好的视觉效果,我们必须让修复效果更加符合
视觉感知的特性,使得图像看起来浑然一体,没有修改过的痕迹。

 

#include <iostream>
#include <opencv2/photo/photo.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;#define WINDOW_NAME0 "【原始图】"
#define WINDOW_NAME1 "【中值滤波】"
#define WINDOW_NAME2 "【补修后的效果图】"Mat srcImage, medianBlurImage, inpaintMask;
Point previousPoint(-1, -1);//原来的点坐标
static void On_Mouse(int event, int x, int y, int flages, void*);int main(int argc, char** argv)
{srcImage = imread("C:\\Users\\darren\\Desktop\\proj_test\\test\\test\\picture_test1\\2.jpg",-1);if (!srcImage.data){printf("读取错误!\n");return false;}imshow(WINDOW_NAME0, srcImage);//waitKey(0);srcImage = srcImage.clone();medianBlurImage = srcImage.clone();inpaintMask = Mat::zeros(medianBlurImage.size(), CV_8U);//中值滤波medianBlur(srcImage, medianBlurImage, 7);imshow(WINDOW_NAME1, medianBlurImage);//显示中值滤波图像//waitKey(0);setMouseCallback(WINDOW_NAME1, On_Mouse, 0);  //设置鼠标回调消息while (1){char c = (char)waitKey();//获取键值if (c == 27)  break;  //ESC,推出if (c == '1') //键值为1,图像修补{Mat inpaintedImage;inpaint(medianBlurImage, inpaintMask, inpaintedImage, 3, CV_INPAINT_TELEA);imshow(WINDOW_NAME2, inpaintedImage);}}return 0;
}//鼠标回调函数
static void On_Mouse(int event, int x, int y, int flags, void*)
{//左键弹起消息if (event == EVENT_LBUTTONUP || !(flags & EVENT_FLAG_LBUTTON))previousPoint = Point(-1, -1);//左键按下消息else if (event == EVENT_LBUTTONDOWN)previousPoint = Point(x, y);//按下并移动,绘制else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)){Point pt(x, y);if (previousPoint.x < 0)previousPoint = pt;//绘制白色线条line(inpaintMask, previousPoint, pt, Scalar::all(255), 5, 8, 0);line(medianBlurImage, previousPoint, pt, Scalar::all(255), 5, 8, 0);previousPoint = pt;imshow(WINDOW_NAME1, medianBlurImage);}}


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

相关文章

图像恢复

图像恢复(复原)与图像增强的研究内容有一定的交叉性&#xff1a;图像增强1是一种改进图像视觉效果的技术(增益性)&#xff1b;图像恢复2是一种对退化(或品质下降)了的图像去除退化因素&#xff0c;并进而复原或重建退化图像的技术。 根据以上定义&#xff0c;通过去模糊函数…

图像处理总复习4、图像恢复

1、图像去噪和恢复 2、图像校正和修补 3、图像去雾 图像去噪和恢复 图像退化与噪声 图像退化模型 无约束恢复 有约束恢复 交互式恢复 什么是图像退化 图像退化是指由场景到图像没能完全地反应场景的真实内容&#xff0c;产生了失真等问题。 图像退化的处理方法 无论是由光学、…

PGP公钥加密实验

文章目录 创建密钥加解密 由于是本机进行PGP的加解密实验&#xff0c;因此没有交换公钥的步骤&#xff0c;真实环境理应双方互相交换公钥。 创建密钥 1、下载并安装软件 PGP下载地址&#xff1a;http://www.pgp.cn/download.htm 安装期间电脑会重启。 2、安装成功后&#x…

SSL基础:9:公钥加密 vs 私钥加密

在前面的文章中讲述过使用公钥加密、私钥解密的使用示例&#xff0c;同时也介绍过使用私钥对文件进行签名&#xff0c;使用公钥进行验证的示例。这篇文章继续来讨论一下应该是公钥加密还是私钥加密的问题。 公钥和私钥相关的基础常识 首先关于公钥、私钥又如下基本常识&#…

使用RSA实现前端公钥加密后端私钥解密

听说你还不会RSA算法实现前端加密后端解密&#xff1f;&#xff1f;&#xff1f;那就来看这里… RSA前端加密后端解密避免出现明文密码传递 话不多说,直接开撸 前端JS 项目中先添加rsa.js文件 链接&#xff1a;https://pan.baidu.com/s/1r9930MkS4n8TR9IsOIXV-Q 提取码&…

公钥加密应用--数字签名

公钥加密应用–数字签名 文章目录 公钥加密应用--数字签名概述私钥加密HASH算法签名算法的使用流程签名算法的应用认证身份完整性不可抵赖性 撤销签名密钥签名算法DSA算法ECDSA算法ECDSA--SM2签名算法 Reference 概述 ​ 本文主要带大家详细了解数字签名的一些知识&#xff0c…

公钥加密

公钥密码又称为非对称密码&#xff0c;拥有公钥密码的用户分别拥有加密密钥和解密密钥。通过加密密钥不能得到解密密钥。并且加密密钥是公开的。 什么是密钥配送问题 在现实世界中使用对称密码时&#xff0c;我们一定会遇到密钥配送问题( key distribution problem)。 假如 …

SM2公钥加密与解密

SM2加解密 字符串公钥SM2加解密工具类 始于我工作中的一个需求&#xff0c;在网上很少找到资料所以来写一下 字符串公钥 公钥是对接方给的&#xff0c;是一个长字符串类似于这种格式 工具类中也有生成公私钥的方法&#xff0c;我测试加解密也能成功 秘钥生成借鉴的是这个文章…

公钥加密算法-RSA

RSA算法 RSA算法是由它的三位开发者&#xff0c;即 Ron Rivest、Adi Shamir 和 Leonard Adleman 的姓氏的首字母组成的 (Rivest-Shamir-Adleman)。 RSA 可以被用于公钥加密、数字签名和密钥交换。 文章目录 RSA算法一、简介二、RSA算法流程1、 加密或者验签过程2、解密或者签名…

公钥加密与PKI实验

环境&#xff1a;安装openssl库和bless工具 1.openssl库 2.bless工具 一&#xff0e;成为数字证书认证机构 1.新建一个工作目录 2.为CA生成自签名证书 二&#xff0e;为PKILabServer.com生成证书 1.生成公开/私有密钥对 2.生成证书签名请求 3.生成证书 三&#xff0e;在网站中…

java公钥加密私钥解密_公钥加密,私钥解密示例程序(JAVA)详解

公钥与私钥机制属于非对称加密的范畴&#xff0c;非对称是相对于对称加密而言的&#xff0c;对称加密用于加密与解密的密钥是同一把&#xff0c;而非对称加密则用于加密与解密的密钥不相同&#xff0c;一个公开&#xff0c;称为公钥&#xff1b;一个保密&#xff0c;称为私钥&a…

c#加密:四、公钥加密和签名

一、公钥加密 1、概述 公钥加密是非对称的&#xff0c;因此加密和解密需要使用不同的密钥。对称加密的密钥可以是一串长度合适的任意字节串。但非对称加密则需要专门制作一对密钥。 这个密钥对包含一个公钥和一个私钥。它们将一起完成如下工作&#xff1a; 公钥加密消息&#…

为什么用公钥加密却不能用公钥解密?

本文为掘金社区首发签约文章&#xff0c;14天内禁止转载&#xff0c;14天后未获授权禁止转载&#xff0c;侵权必究&#xff01; 一直以来我都在逃避写HTTPS。 毕竟。 HTTPS里名词太多。概念又巨繁琐。 实在是太难解释了&#xff0c;能不写我尽量不写。。。。 但为了让图解网…

公钥加密算法

3 公钥加密算法 加密工具使用 运行RSA-Tool&#xff0c;点击Start按钮&#xff0c;滑动鼠标生成一个随机数。点击Generate生成一对大质数p、q及Npq。 自己选定一个可用的整数e(可使用默认的10001&#xff0c;也可以使用其他的)。点击Calc.D生成d。 3 将公钥(N,e)发送给小伙…

2021-05-05

5.5 实训主题&#xff1a;密码学&#xff08;后续&#xff09; 公钥加密算法 RSA算法的数学原理 阅读RSA.cpp中的代码&#xff0c;了解其实现方法。调试运行RSA.cpp&#xff0c;选择两个不同的素数。根据生成的d和e验证公式de ≡ 1 (mod (p-1)(q-1))。输入要加密的数。验证…

公钥密钥加密原理

转载自&#xff1a;https://www.jianshu.com/p/0bf1c3c047e5 第6章 网络编程与网络框架 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥&#xff1a;一般就是一个字符串或数字&#xff0c;在加密或者解密时传递给加密/解密算法。对称加密算法&#xff1a;加密和解密都是使用的同…

公钥密码体制及RSA公钥加密算法(上)

一.公钥密码体制 &#xff08;1&#xff09;公钥&#xff08;非对称&#xff09;密码概述&#xff1a; 优点&#xff1a;免去密钥分发&#xff0c;密钥管理简单 &#xff08;2&#xff09;公钥加密的设计原则&#xff1a; 已知公私钥&#xff0c;进行加密解密是简单容易的 单…

网关与路由器的区别!!

自我认识&#xff1a; “网关” &#xff1a;让两个不同网络相互之间进行通信&#xff0c;可以使具有不同协议的网络相互连接。 “路由器”&#xff1a;能在计算机网络之间发送和接收数据包的设备&#xff0c;并且提供最佳路由路径的一种网络互联设备。但是只能在使用相同协议…

什么是网关和网关的作用

什么是网关? 网关(Gateway)指的是这一个网络连接到另一个网络的“关口”&#xff0c;它又称网间连接器、协议转换器。在Internet网里&#xff0c;网关的作用是一种连接内部网与Internet上其它网的一种中间设备&#xff0c;通俗来说&#xff0c;也叫做“路由器”。网关地址是能…

微服务——API网关

什么是API网关 API网关&#xff08;API Gateway&#xff09;是应用服务之前的系统&#xff0c;用来代理业务系统的服务API&#xff0c;在网关层处理所有的非业务功能&#xff0c;实现管理授权、访问控制和流量限制等功能。这样业务系统就可以专注于业务&#xff0c;而不用去处…