Total Variation loss

Total Variation loss

适合任务

图像复原、去噪等

处理的问题

图像上的一点点噪声可能就会对复原的结果产生非常大的影响,很多复原算法都会放大噪声。因此需要在最优化问题的模型中添加一些正则项来保持图像的光滑性,图片中相邻像素值的差异可以通过降低TV loss来一定程度上解决,比如降噪,对抗checkerboard等等。

原始定义

受噪声污染的图像的总变分比无噪图像的总变分明显的大,最小化TV理论上就可以最小化噪声。图片中相邻像素值的差异可以通过降低TV loss来一定程度上解决,比如降噪,对抗checkerboard等等。总变分定义为梯度幅值的积分

在这里插入图片描述

在这里插入图片描述
扩展定义

带阶数的TV loss 定义如下:

在这里插入图片描述

但是在图像中,连续域的积分就变成了像素离散域中求和,所以可以这么算:

在这里插入图片描述

即:求每一个像素和横向下一个像素的差的平方,加上纵向下一个像素的差的平方。然后开β/2次根

函数效果

在这里插入图片描述

代码实现

import torch
import torch.nn as nn
from torch.autograd import Variableclass TVLoss(nn.Module):def __init__(self,TVLoss_weight=1):super(TVLoss,self).__init__()self.TVLoss_weight = TVLoss_weightdef forward(self,x):batch_size = x.size()[0]h_x = x.size()[2]w_x = x.size()[3]count_h = self._tensor_size(x[:,:,1:,:])count_w = self._tensor_size(x[:,:,:,1:])h_tv = torch.pow((x[:,:,1:,:]-x[:,:,:h_x-1,:]),2).sum()w_tv = torch.pow((x[:,:,:,1:]-x[:,:,:,:w_x-1]),2).sum()return self.TVLoss_weight*2*(h_tv/count_h+w_tv/count_w)/batch_sizedef _tensor_size(self,t):return t.size()[1]*t.size()[2]*t.size()[3]if __name__ == '__main__':x = Variable(torch.FloatTensor([[[1, 2, 3], [2, 3, 4], [3, 4, 5]], [[1, 2, 3], [2, 3, 4], [3, 4, 5]]])\.view(1, 2, 3, 3),requires_grad=True)addition = TVLoss()z = addition(x)z.backward()

代码简写&分析

def total_variation(x):"""Anisotropic TV."""# 计算输入张量x在水平方向上的变差,通过计算相邻像素之间的差的绝对值,并求取水平方向上的平均值dx = torch.mean(torch.abs(x[:, :, :, :-1] - x[:, :, :, 1:]))# 计算输入张量x在垂直方向上的变差,通过计算相邻像素之间的差的绝对值,并求取垂直方向上的平均值。dy = torch.mean(torch.abs(x[:, :, :-1, :] - x[:, :, 1:, :]))# 返回水平方向和垂直方向上变差的总和作为总变差的值return dx + dy

总变差是一种用于衡量图像平滑度的指标,它量化了图像中相邻像素之间的差异程度。较小的总变差值表示图像较为平滑,而较大的总变差值表示图像较为纹理丰富或边缘明显。总变差在图像处理和计算机视觉中广泛应用,用于图像去噪、图像恢复、图像分割等任务中。

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

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

相关文章

使用 Webpack 优化前端开发流程

在现代前端开发中,构建工具的选择和优化流程的设计至关重要。Webpack 是一个功能强大的前端构建工具,能够优化我们的开发流程,提高开发效率和项目性能。本文将介绍如何使用 Webpack 来优化前端开发流程。 代码优化和资源管理也是前端项目中不…

传统计算机视觉

传统计算机视觉 计算机视觉难点图像分割基于主动轮廓的图像分割基于水平集的图像分割交互式图像分割基于模型的运动分割 目标跟踪基于光流的点目标跟踪基于均值漂移的块目标跟踪基于粒子滤波的目标跟踪基于核相关滤波的目标跟踪 目标检测一般目标检测识别之特征一般目标检测识别…

18.Netty源码之ByteBuf 详解

highlight: arduino-light ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。 然而 JDK NIO 包中已经提供了类似的 ByteBuffer 类,为什么 Netty 还要去重复造轮子呢?本节课我会详细地讲解 ByteBuf。 JDK NIO…

Spring学习记录----十五、面向切面编程AOP+十六、Spring对事务的支持

目录 十五、面向切面编程AOP 15.1 AOP介绍 总结 15.2 AOP的七大术语 15.3 切点表达式 15.4 使用Spring的AOP 15.4.1 准备工作 15.4.1.1Spring AOP 基于注解之实现步骤 15.4.1.2-Spring AOP 基于注解之切点表达式 代码 运行结果: 代码 运行结果 通知类…

Python高阶技巧 递归

递归的定义 函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。 递归的思想 把规模大的问题转化为规模小的、具有与原来问题相同解法的问题来解决。在函数实现时&#…

SpringBoot集成Thymeleaf

Spring Boot 集成 Thymeleaf 模板引擎 1、Thymeleaf 介绍 Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。 Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板,既可以在浏览器中正确显示的 HTML,也可以用作静态原型&#xf…

C#+WPF上位机开发(模块化+反应式)

在上位机开发领域中,C#与C两种语言是应用最多的两种开发语言,在C语言中,与之搭配的前端框架通常以QT最为常用,而C#语言中,与之搭配的前端框架是Winform和WPF两种框架。今天我们主要讨论一下C#和WPF这一对组合在上位机开…

后台生成验证码的方法,验证码相关

1、后台生成验证码的方法 /**** [验证码生成] [验证码生成]base64*/RequestMapping(value "/getverifycode", method RequestMethod.POST)public String getVerifyCode(RequestBody String param) {try {Integer codeLength Integer.parseInt("4");Int…

css图标 | 来自 fontawesome 字体文件的586 个小图标

1. css效果 /*!* Font Awesome 4.4.0 by davegandy - http://fontawesome.io - fontawesome* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)*/.fa-glass:before {content:"\f000"} .fa-music:before {content:"\f001"…

Nginx配置https链接跳转http

由于项目中实际用的http进行发布访问,网址链接没有指定为http类型,导致某些场景下打开链接是https方式进行访问,就会显示404错误,没法正常访问。 为了解决这种情况,需要进行Nginx配置,浏览器以https进行访…

小白如何理解MySQL?一文吃透

从本质上来说,MySQL也是一个软件,以Java为例,Java通过JDBC进行MySQL驱动连接后,通过调用“MySQL”的“接口”将SQL语句传给MySQL,并获取返回结果! 连接器 第一步,你会先连接到这个数据库上&…

el-upload 上传视频并回显

el-upload上传视频&#xff0c;并且显示上传的视频 <el-form-item><label slot"label"><span style"color:#F56C6C">*</span> 视频</label><el-upload class"upload-demo" style"width:360px" :act…

项目管理:项目计划有哪些不可忽视的作用

为了确保项目在我们的预期范围内完成&#xff0c;编制计划是不可或缺的&#xff0c;它可以帮助项目管理团队进行提前思考、识别和管理任何疏漏和风险。 项目计划进行跟踪中有哪些不可忽视的作用&#xff1a; 1、了解成员的工作情况 分配任务后&#xff0c;项目经理应主动与…

蓝海卓越计费管理系统任意文件读取下载

看了大佬的文章&#xff0c;太牛逼啦&#xff0c;下面是大佬文章原文。 蓝海卓越计费管理系统任意文件读取下载 鹰图语法&#xff1a;web.title"蓝海卓越计费管理系统" 访问url 直接更改url就行了 /download.php?file../../../../../etc/passwd

nginx 配置多域名多站点 Ubuntu

nginx 配置多域名多站点 Ubuntu 一、安装 nginx apt install nginx二、配置文件说明 nginx 的配置文件在 /etc/nginx 目录下&#xff0c;它的默认内容是这样的 root2bd0:/etc/nginx# ll total 72 drwxr-xr-x 8 root root 4096 Jul 31 15:21 ./ drwxr-xr-x 104 root root …

需要暴雨天气安全“指南”的不仅仅是个人

昨日&#xff0c;人民日报官微发布#暴雨天气10个安全指南#&#xff0c;从居家防范、行车安全、户外出行、遇灾求救、次生灾害、防疫防病等方面给出了针对暴雨的安全建议。 以上10条指南是主要面向个人的建议&#xff0c;而在城市水利基础设施的运营和维护上&#xff0c;需要一些…

排序进行曲-v1.0

排序 排序是将一组数据按照一定的规则进行排列的过程。在计算机科学中&#xff0c;排序是一 种常见的算法问题&#xff0c;通常用于对数据进行整理、查找、统计等操作。概念解读 基本概念 排序算法&#xff1a;排序算法是实现数据排序的具体方法。常见的排序算法包括冒泡排序…

leetcode 860. 柠檬水找零

2023.8.1 简单的一个思路就是建一个大小为3的数组change &#xff0c;用于存储剩余的零钱&#xff0c;然后遍历账单&#xff0c;每次找零钱的时候判断一下是否有足够的零钱&#xff0c;不够的话直接返回false。 能坚持到结束遍历则返回true。 代码如下&#xff1a; class Solu…

【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

"不言而善应" 0. 基础知识1. 特征提取和匹配1.1 FAST关键点1.2 ORB的关键点--改进FAST1.3 ORB的描述子--BRIEF1.4 总结 2. 对极几何&#xff0c;对极约束2.1 本质矩阵(对极约束)2.1.1 求解本质矩阵2.1.2 恢复相机运动 R &#xff0c; t R&#xff0c;t R&#xff0c;…

安全初级知识点详解

OOP 面向对象编程&#xff08;Object Oriented Programming &#xff0c;简称OOP&#xff09;是目前主流的编程范式。它将真实世界各种复杂的关系&#xff0c;抽象为一个个对象&#xff0c;然后由对象之间的分工与合作&#xff0c;完成对真实世界的模拟。 每一个对象都是功能中…