标签: ssim

TensorFlow的SSIM/MS-SSIM

是否有针对TensorFlowSSIM甚至MS-SSIM实现?

SSIM(结构相似性指数度量)是用于测量图像质量或图像相似性的度量.它受人类感知的启发,根据一些论文,与l1/l2相比,它具有更好的损失功能.例如,请参阅用于图像处理的神经网络的损失函数.

到目前为止,我在TensorFlow中找不到实现.在尝试通过从C++或python代码(例如Github:VQMT/SSIM)移植它来自己做之后,我陷入了将高斯模糊应用于TensorFlow中的图像的方法.

有人已经试图自己实施吗?

python metrics ssim tensorflow

8
推荐指数
2
解决办法
1万
查看次数

哪个 SSIM 是正确的:skimage.metrics.structural_similarity()?

Stackoverflow 社区,

我正在尝试bmp在 Python 上的两个图像之间计算 SSIM(结构相似性)。我发现了在python 库中实现的structure_similarity()函数skimage和来自此处托管的原始MatLab实现的等效代码。含义如下:

def structuralSimilarityIndex(ref_image, impaired_image, cs_map=False):

    window = Metric.fSpecialGauss(constant.SSIM_FILTER_SIZE,
                                  constant.SSIM_FILTER_SIGMA)
    C1 = (constant.SSIM_Constant_1 * constant.PIXEL_MAX) ** 2
    C2 = (constant.SSIM_Constant_2 * constant.PIXEL_MAX) ** 2

    mu1 = signal.fftconvolve(window, ref_image, mode='valid')
    mu2 = signal.fftconvolve(window, impaired_image, mode='valid')

    mu1_sq = mu1 * mu1
    mu2_sq = mu2 * mu2
    mu1_mu2 = mu1 * mu2

    sigma1_sq = signal.fftconvolve(
        window, ref_image*ref_image, mode='valid') - mu1_sq
    sigma2_sq = signal.fftconvolve(
        window, impaired_image*impaired_image, mode='valid') - mu2_sq …
Run Code Online (Sandbox Code Playgroud)

python image image-processing ssim scikit-image

7
推荐指数
1
解决办法
7382
查看次数

如何获得两幅图像之间的SSIM比较分数?

我正在尝试计算相应图像之间的 SSIM。例如,groundtruth 目录中名为 106.tif 的图像对应于 fake 目录中的“假”生成图像 106.jpg。

真实目录绝对路径是/home/pr/pm/zh_pix2pix/datasets/mousebrain/test/B 假目录绝对路径是/home/pr/pm/zh_pix2pix/output/fake_B

里面的图片是一一对应的,像这样: 见图片

我想一对一地比较数千张这样的图像。我不想将一张图像的 SSIM 与许多其他图像进行比较。相应的真实图像和假图像都具有相同的文件名,但扩展名不同(即106.tif和106.jpg),我只想将它们相互比较。

我正在努力以这种方式编辑用于 SSIM 比较的可用脚本。我想使用这个:https://github.com/mostafaGwely/Structural-Similarity-Index-SSIM-/blob/master/ssim.py但欢迎其他建议。代码也如下所示:

# Usage:
#
# python3 script.py --input original.png --output modified.png
# Based on: https://github.com/mostafaGwely/Structural-Similarity-Index-SSIM-

# 1. Import the necessary packages
#from skimage.measure import compare_ssim
from skimage.metrics import structural_similarity as ssim
import argparse
import imutils
import cv2

# 2. Construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-f", "--first", required=True, help="Directory of the image …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing ssim scikit-image

7
推荐指数
1
解决办法
3万
查看次数

图像处理 - PSNR和SSIM指标是否显示平滑(降噪)质量?

对于我的图像处理类项目,我使用各种过滤算法(双边滤波器,NL-Means等)过滤图像,并尝试将结果与变化的参数进行比较.我遇到了PSNR和SSIM指标来衡量过滤器质量,但无法完全理解这些值的含义.任何人都可以帮助我:

  • 更高的PSNR值是否意味着更高质量的平滑(消除噪音)?
  • SSIM值应该接近1才能获得高质量的平滑效果吗?
  • 是否有其他衡量平滑质量的指标或方法?

我真的很困惑.任何帮助将受到高度赞赏.谢谢.

image-processing ssim

6
推荐指数
2
解决办法
1万
查看次数

在 RGB 图像的 tensorflow 中使用 SSIM 损失函数

我想使用SSIM 度量作为我在tensorflow 中处理的模型的损失函数。SSIM 应该测量我的去噪自动编码器的重建输出图像与输入未损坏图像(RGB)之间的相似性。

据我了解,为了在 tensorflow 中使用 SSIM 度量,图像应该归一化为[0,1] 或 [0,255] 而不是 [-1,1]。在将我的张量转换为 [0,1] 并实现 SSIM 作为我的损失函数后,重建的图像是黑白的,而不是彩色的 RGB 图像。

tf.reduce_mean(tf.image.ssim(reconstructed, truth, 1.0))
Run Code Online (Sandbox Code Playgroud)

我的模型在MSE(均方误差)下工作正常,重建的图像是彩色的 (RGB)

使用tf.losses.mean_squared_error(truth, reconstructed)重建的图像将是 RGB 图像,而使用 SSIM 会给我一个一维图像。

为什么在张量流中使用SSIM 作为损失函数给我的结果与 MSE(在重建图像通道方面)不同?

python image mse ssim tensorflow

6
推荐指数
1
解决办法
9001
查看次数

没有OpenCV的开源PSNR/SSIM C实现?

是否有任何不依赖OpenCV的PSNR,SSIM或MSE的开源C实现?

谢谢.

c algorithm open-source video-processing ssim

5
推荐指数
1
解决办法
4467
查看次数

在 Python 中比 MSE 更好地比较图像的快速技术

我一直在使用结构相似性指数(通过 tensorflow)来比较图像,但是它花费的时间太长。我想知道是否有一种不需要太多时间的替代技术。如果有人能指出比 Python 中的 tensorflow 更有效的 SSIM 实现,那也没关系。

我使用 SSIM 的意图是,给定一个参考图像 (A) 和一图像 (B),我需要了解 B 中的哪个图像与参考图像 A 最相似。

image-processing similarity python-3.x ssim

5
推荐指数
1
解决办法
457
查看次数

用于 3D 图像体积的 SSIM

我正在使用 TensorFlow 处理图像超分辨率问题(2D 和 3D),并且正在使用 SSIM 作为eval_metrics.

我正在使用image.ssim来自 TF 和measure.comapre_ssim来自skimage. 它们都为 2D 提供了相同的结果,但 3D 体积的结果总是有所不同。

我已经查看了TF-implementationskimage-implementation的源代码。在两种实现中如何考虑和处理输入图像似乎存在一些根本差异。

复制问题的代码:

import numpy as np
import tensorflow as tf

from skimage import measure

# For 2-D case
np.random.seed(12345)
a = np.random.random([32, 32, 64])
b = np.random.random([32, 32, 64])

a_ = tf.convert_to_tensor(a)
b_ = tf.convert_to_tensor(b)

ssim_2d_tf = tf.image.ssim(a_, b_, 1.0)
ssim_2d_sk = measure.compare_ssim(a, b, multichannel=True, gaussian_weights=True, data_range=1.0, use_sample_covariance=False)

print (tf.Session().run(ssim_2d_tf), ssim_2d_sk)

# For …
Run Code Online (Sandbox Code Playgroud)

image-processing python-2.7 ssim scikit-image tensorflow

3
推荐指数
1
解决办法
1872
查看次数

为什么 ffmpeg 生成的 psnr 和 ssim 值与 H264 生成的值不同

我从输入流(mxf 或 mov)中获取生成的 mp4 视频流,并且在执行此操作时我将其-psnr用作 H264 参数。结果是大约。40 或 41。

然后我将输入和输出与 psnr(或 ssim)过滤器进行比较。结果大约 20 或 21。这是一个很大的区别。有没有人知道这种差异的原因?

注意:ssim 结果是相似的。第一个是 ~0.97,第二个是 ~0.83

信噪比

ffmpeg -i input.mov -codec:v libx264 -psnr -f mp4 output.mp4
PSNR (~40)

ffmpeg -i output.mp4 -i input.mov -filter_complex psnr -f mp4 /dev/null
PSNR (~20)
Run Code Online (Sandbox Code Playgroud)

SSIM

ffmpeg -i input.mov -codec:v libx264 -ssim -f mp4 output.mp4
SSIM (~0.98...)

ffmpeg -i output.mp4 -i input.mov -filter_complex ssim -f mp4 /dev/null
PSNR (~0.83...)
Run Code Online (Sandbox Code Playgroud)

metrics ffmpeg video-streaming ssim

2
推荐指数
1
解决办法
4733
查看次数

ValueError:win_size 超出图像范围。如果输入是多通道(彩色)图像,则设置 multichannel=True

我正在尝试计算两个图像的 SSIM 值,但出现错误。

  • img_np.shape = (1, 256, 256)
  • out.detach()[0].cpu().numpy().shape = (1, 256, 256)
  • out是从模型生成的输出图像

当我尝试查找 SSIM 值时ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0])出现错误ValueError: win_size exceeds image extent. If the input is a multichannel (color) image, set multichannel=True.

我努力了

  • ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0], full=True)但同样的错误
  • ssim_ = compare_ssim(img_np, out.detach().cpu().numpy()[0], full=True, win_size=1,use_sample_covariance=False)然后我得到的输出是数组而不是数字

python image-processing ssim scikit-image

2
推荐指数
1
解决办法
1万
查看次数