Python和C++多尺度导图

news2025/3/12 22:33:14

🎯要点

  1. 热化学属性观测
  2. 蒙特卡罗似然比灵敏度分析时间尺度上动力学
  3. 化学催化反应动力学建模
  4. 自动微分电化学分析模型
  5. 反应动力学数学模型
  6. 渔业生态不确定性模型敏感性分析
  7. 空间统计地理模型分析技术
  8. 多维数据表征实现
  9. 生成艺术图案流苏
  10. 物体长度比,面积比和复杂度数据统计学分析
  11. 二维三维耦合偏微分方程有限元解析
  12. 交通标识识别
    在这里插入图片描述

Python(TensorFlow)结构相似性

结构相似性指数测量是一种预测数字电视和电影画面以及其他类型的数字图像和视频的感知质量的方法。它也用于测量两幅图像之间的相似性,此指数是一个完全参考指标,换句话说,图像质量的测量或预测是基于初始未压缩或无失真图像作为参考的。

结构相似性指数测量是一种基于感知的模型,它将图像质量下降视为结构信息的感知变化,同时还结合了重要的感知现象,包括亮度掩蔽和对比度掩蔽项。与其他技术(如 MSE 或 PSNR)的不同之处在于,这些方法估算绝对误差。结构信息是指像素具有很强的相互依赖性,尤其是当它们在空间上接近时。这些依赖关系包含有关视觉场景中物体结构的重要信息。亮度掩蔽是一种现象,即图像失真(在这种情况下)在明亮区域中往往不太明显,而对比度掩蔽是一种现象,即当图像中存在显着活动或“纹理”时,失真会变得不太明显。

算法

此指数是在图像的各个窗口上计算的。共同大小为 N × N N \times N N×N 的两个窗口 x x x y y y 之间的度量为:
结构相似性指数测量 ⁡ ( x , y ) = ( 2 μ x μ y + c 1 ) ( 2 σ x y + c 2 ) ( μ x 2 + μ y 2 + c 1 ) ( σ x 2 + σ y 2 + c 2 ) \operatorname{结构相似性指数测量}(x, y)=\frac{\left(2 \mu_x \mu_y+c_1\right)\left(2 \sigma_{x y}+c_2\right)}{\left(\mu_x^2+\mu_y^2+c_1\right)\left(\sigma_x^2+\sigma_y^2+c_2\right)} 结构相似性指数测量(x,y)=(μx2+μy2+c1)(σx2+σy2+c2)(2μxμy+c1)(2σxy+c2)

  • μ x \mu_x μx x x x 的像素样本平均值
  • μ y \mu_y μy y y y 的像素样本平均值
  • σ x 2 \sigma_x^2 σx2 x x x 的方差
  • σ y 2 \sigma_{y}^2 σy2 y y y的方差
  • σ x y \sigma_{x y} σxy x x x y y y 的协方差
  • c 1 = ( k 1 L ) 2 , c 2 = ( k 2 L ) 2 c_1=\left(k_1 L\right)^2, c_2=\left(k_2 L\right)^2 c1=(k1L)2,c2=(k2L)2两个变量来稳定弱分母除法
  • L L L 像素值的动态范围(通常为 2 #  Wits per Pixel  − 1 2^{\# \text { Wits per Pixel }}-1 2# Wits per Pixel 1
  • 默认情况下 k 1 = 0.01 k_1=0.01 k1=0.01 k 2 = 0.03 k_2=0.03 k2=0.03

公式基于 x x x y y y 样本之间的三个比较测量值:亮度 ( l ) (l) (l)、对比度 ( c ) (c) (c) 和结构 (s)。各个比较函数是:
l ( x , y ) = 2 μ x μ y + c 1 μ x 2 + μ y 2 + c 1 c ( x , y ) = 2 σ x σ y + c 2 σ x 2 + σ y 2 + c 2 s ( x , y ) = σ x y + c 3 σ x σ y + c 3 \begin{aligned} & l(x, y)=\frac{2 \mu_x \mu_y+c_1}{\mu_x^2+\mu_y^2+c_1} \\ & c(x, y)=\frac{2 \sigma_x \sigma_y+c_2}{\sigma_x^2+\sigma_y^2+c_2} \\ & s(x, y)=\frac{\sigma_{x y}+c_3}{\sigma_x \sigma_y+c_3} \end{aligned} l(x,y)=μx2+μy2+c12μxμy+c1c(x,y)=σx2+σy2+c22σxσy+c2s(x,y)=σxσy+c3σxy+c3

结构相似性指数测量的更高级形式称为多尺度结构相似性指数测量,它通过多阶段子采样过程在多个尺度上进行,让人想起早期视觉系统中的多尺度处理。事实证明,它在不同的主观图像和视频数据库上的表现与结构相似性指数测量相当或更好。

Python(TensorFlow)多尺度结构相似性指数测量

import numpy as np
from scipy import signal
from scipy.ndimage.filters import convolve
import tensorflow as tf


tf.flags.DEFINE_string('original_image', None, 'Path to PNG image.')
tf.flags.DEFINE_string('compared_image', None, 'Path to PNG image.')
FLAGS = tf.flags.FLAGS


def _FSpecialGauss(size, sigma):

  radius = size // 2
  offset = 0.0
  start, stop = -radius, radius + 1
  if size % 2 == 0:
    offset = 0.5
    stop -= 1
  x, y = np.mgrid[offset + start:stop, offset + start:stop]
  assert len(x) == size
  g = np.exp(-((x**2 + y**2)/(2.0 * sigma**2)))
  return g / g.sum()

def _SSIMForMultiScale(img1, img2, max_val=255, filter_size=11,
                       filter_sigma=1.5, k1=0.01, k2=0.03):

  if img1.shape != img2.shape:
    raise RuntimeError('Input images must have the same shape (%s vs. %s).',
                       img1.shape, img2.shape)
  if img1.ndim != 4:
    raise RuntimeError('Input images must have four dimensions, not %d',
                       img1.ndim)

  img1 = img1.astype(np.float64)
  img2 = img2.astype(np.float64)
  _, height, width, _ = img1.shape

  size = min(filter_size, height, width)

  sigma = size * filter_sigma / filter_size if filter_size else 0

  if filter_size:
    window = np.reshape(_FSpecialGauss(size, sigma), (1, size, size, 1))
    mu1 = signal.fftconvolve(img1, window, mode='valid')
    mu2 = signal.fftconvolve(img2, window, mode='valid')
    sigma11 = signal.fftconvolve(img1 * img1, window, mode='valid')
    sigma22 = signal.fftconvolve(img2 * img2, window, mode='valid')
    sigma12 = signal.fftconvolve(img1 * img2, window, mode='valid')
  else:

    mu1, mu2 = img1, img2
    sigma11 = img1 * img1
    sigma22 = img2 * img2
    sigma12 = img1 * img2

  mu11 = mu1 * mu1
  mu22 = mu2 * mu2
  mu12 = mu1 * mu2
  sigma11 -= mu11
  sigma22 -= mu22
  sigma12 -= mu12

  c1 = (k1 * max_val) ** 2
  c2 = (k2 * max_val) ** 2
  v1 = 2.0 * sigma12 + c2
  v2 = sigma11 + sigma22 + c2
  ssim = np.mean((((2.0 * mu12 + c1) * v1) / ((mu11 + mu22 + c1) * v2)))
  cs = np.mean(v1 / v2)
  return ssim, cs


def MultiScaleSSIM(img1, img2, max_val=255, filter_size=11, filter_sigma=1.5,
                   k1=0.01, k2=0.03, weights=None):

  if img1.shape != img2.shape:
    raise RuntimeError('Input images must have the same shape (%s vs. %s).',
                       img1.shape, img2.shape)
  if img1.ndim != 4:
    raise RuntimeError('Input images must have four dimensions, not %d',
                       img1.ndim)

  # Note: default weights don't sum to 1.0 but do match the paper / matlab code.
  weights = np.array(weights if weights else
                     [0.0448, 0.2856, 0.3001, 0.2363, 0.1333])
  levels = weights.size
  downsample_filter = np.ones((1, 2, 2, 1)) / 4.0
  im1, im2 = [x.astype(np.float64) for x in [img1, img2]]
  mssim = np.array([])
  mcs = np.array([])
  for _ in range(levels):
    ssim, cs = _SSIMForMultiScale(
        im1, im2, max_val=max_val, filter_size=filter_size,
        filter_sigma=filter_sigma, k1=k1, k2=k2)
    mssim = np.append(mssim, ssim)
    mcs = np.append(mcs, cs)
    filtered = [convolve(im, downsample_filter, mode='reflect')
                for im in [im1, im2]]
    im1, im2 = [x[:, ::2, ::2, :] for x in filtered]
  return (np.prod(mcs[0:levels-1] ** weights[0:levels-1]) *
          (mssim[levels-1] ** weights[levels-1]))


def main(_):
  if FLAGS.original_image is None or FLAGS.compared_image is None:
    print('\nUsage: python msssim.py --original_image=original.png '
          '--compared_image=distorted.png\n\n')
    return

  if not tf.gfile.Exists(FLAGS.original_image):
    print('\nCannot find --original_image.\n')
    return

  if not tf.gfile.Exists(FLAGS.compared_image):
    print('\nCannot find --compared_image.\n')
    return

  with tf.gfile.FastGFile(FLAGS.original_image) as image_file:
    img1_str = image_file.read()
  with tf.gfile.FastGFile(FLAGS.compared_image) as image_file:
    img2_str = image_file.read()

  input_img = tf.placeholder(tf.string)
  decoded_image = tf.expand_dims(tf.image.decode_png(input_img, channels=3), 0)

  with tf.Session() as sess:
    img1 = sess.run(decoded_image, feed_dict={input_img: img1_str})
    img2 = sess.run(decoded_image, feed_dict={input_img: img2_str})

  print((MultiScaleSSIM(img1, img2, max_val=255)))


if __name__ == '__main__':
  tf.app.run()

执行:

python msssim.py --original_image=original.png --compared_image=distorted.png

👉更新:亚图跨际

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

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

相关文章

闯关leetcode——1.Two Sum

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/two-sum/description/ 内容 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input w…

MCU5.51单片机的最小系统

1.最小系统的组成部分 晶振电路(时钟),复位电路,电源电路(控制电压,保持稳定),下载电路(外加的,用于烧录程序) 烧录: 通过下载电路,把程序下载到单片机中用于运行 2.晶振电路 电路图: 是晶振 是电容 为了防止晶振起振时产生影响,因此加电容 3.复位电路 电路图: 按按钮RS…

音视频开发之旅(92)-多模态Clip论文解读与源码分析

目录 1. 背景和问题 2. CLIP模型结构 3. 实验效果 4. 源码分析 5. CLIP的局限性和不足 6. 资料 一. 背景和问题 在做分类 检测以及分割任务时,数据的标注非常关键, 比如可用于分类任务的ImageNet数据集共有120万张图片1000个分类, 可用于目标检测和分割任务的COCO数据集…

应用层简单实现udp / tcp网络通信

一、常见网络接口总结 1、创建 socket 文件描述符 (TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol); domain:AF_INET:网络通信,AF_LOCAL:本地通信 type:UDP:SOCK_DGRAM&…

AI是不是真的能落地应用,未来看看这三个行业

大家好,我是凡人,最近也被GPT-4o刷爆了朋友圈,各种对OpenAI新布局的猜想也是层出不穷。GPT-4o再次将多模态交互拉到了新高度,一放出就颠覆了原有 AI 给传统行业带来新冲击。 还有不了解GPT-4o 的同学,可以查看我上一篇…

Java异常体系----深入讲解

JAVA异常体系 1.error 错误 程序无法处理的异常, 它是由JVM产生和抛出的,比如OutOfMemoryError.ThreadDeath等 示例: public class Test {public static void main(String[] args) {run();}public static void run(){run();} }堆栈溢出,…

828华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台

华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Halo介绍2.1 Halo 简介2.2 Halo 特点 三、本次实践介绍3.1 本次实践简…

Linux日志-journal日志

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux 系统中的日志是记录系统活动和事件的重要工具,它们可以帮助管理员监视系统状态、调查问题以及了解系统运行…

Linux Debian12安装原生版微信

1.原生版微信下载地址: https://archive.ubuntukylin.com/software/pool/partner/找到weixin,2022年05月23日最新版本,weixin_2.1.4_amd64.deb,下载。 2.微信安装: sudo dpkg -i weixin_2.1.4_amd64.deb3.登陆即可。…

如何在3DMAX中实现大规模项目的地形建模?

在房地产开发项目的环境建模过程中,我们对斜坡和不平坦地形进行建模是一项具有挑战性的任务。 我们已经制定了两种方法来纠正这一点。首先,让我告诉你,我们并没有想过如何使用NURBS来实现这一点,我们通常坚持使用多边形&#xff…

ueditor视频上传

修改video.js中uploadBeforeSend方法 位置: 修改为: uploader.on(uploadBeforeSend, function (file, data, header) {//这里可以通过data对象添加POST参数const token =******//根据各自项目情况,获取到存储的tokenheader[X_Requested_With] = XMLHttpRequestheader[Aut…

气膜场馆:乡村振兴中的健康与经济新引擎—轻空间

随着乡村振兴战略的深入推进,气膜场馆作为新兴建筑形式,正在为农村地区带来全新的发展机遇。它不仅是乡村百姓锻炼身体的好去处,更是带动当地经济发展的强劲动力。 首先,气膜场馆为农村地区的居民提供了更多运动健身的机会。与传统…

Redis 缓存深度解析:穿透、击穿、雪崩与预热的全面解读

Redis 缓存深度解析:穿透、击穿、雪崩与预热的全面解读 一 . 什么是缓存 ?二 . 使用 Redis 作为缓存三 . 缓存的更新策略3.1 定期生成3.2 实时生成 四 . 缓存预热、缓存穿透、缓存雪崩、缓存击穿4.1 缓存预热4.2 缓存穿透4.3 缓存雪崩4.4 缓存击穿 Hello , 大家好 …

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

全能AI神器!工作效率提升80倍!Zmo.ai带你玩转AI做图!

今天,我要给大家介绍一款神器:Zmo.ai。 这个平台简直是做图神器,集多种功能于一身,让你像专业人士一样轻松创建和编辑图像,不需要任何美术与设计基础,真的非常适合我们这些“手残党”! 我们只需…

香港服务器机房托管:优化全球访问体验的最佳选择

在当今全球化的商业环境中,出海企业面临着前所未有的挑战与机遇。为了在全球范围内高效运营,确保公司内部系统、网站及应用的顺畅访问成为了企业成功的关键。尤其是当企业需要同时服务国内管理团队与海外客户时,如何选择一个既能降低国内访问…

数字化平台跨界融合增值:新起点与新机遇

亲爱的朋友们,在这个快速发展的数字化时代,有一个重要的趋势正站在新起点上,那就是数字化平台跨界融合增值。 新起点的基石技术基础夯实:如今,5G 网络已经全面普及,物联网技术也在深度发展,再加…

AI编程辅助工具先锋:豆包MarsCode

在科技日新月异的今天,AI正以不可阻挡之势渗透到各行各业,其中编程辅助领域也正经历着一场前所未有的变革。随着AI技术的不断成熟与应用深化,编程辅助工具正逐步从简单的代码补全、语法检查,迈向更加智能化、个性化的全方位辅助&a…

【Python 学习】Numpy的基础和应用

目录 1 数组基础1.1 Numpy简介1.2 Numpy数组基础1.3 创建数组1.3.1 使用np.array()函数生成数组1.3.2 利用内置函数产生特定形式的数组1.3.2.1 简单内置函数1.3.2.2 特殊内置函数 1.3.3 生成随机数组 1.4 数组的数据类型1.5 数组的迭代1.6数组的索引和切片1.6.1 一维数组的索引…

NULL 輸出情況

NULL值 輸出情況區分 匯總圖片 select 空 param1 -> param1:null select param1 from 空 —> param1:空 NULL 值出現在查詢結果中 只能由 SELELCT 和 聚合函數 產生 而不是 LIMIT WHERE HAVING FROM 語句 REFERENCE Leetcode 解析