问题标签 [ssim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3185 浏览

python - 使用 SSIM ,尝试比较图像并尝试分别获取亮度、对比度和结构

我在 python 中使用 SSIM 并尝试比较图像。

当我们使用内置时skimage.metrics import structural_similarity,我们将获得 SSIM 分数。但我想要分别获得亮度、对比度和结构分数,以便深入了解图像

我已经通过以下方式更改了内置库:

在下面的代码中:原始 - 是内置的 Lib 代码。补充,是修改后的代码

当我调用函数时

我得到的结果是

*

*

我不明白,为什么“S”是 0.55。而 SSIM 是 1.0?是意料之中的。如果可以预期是什么原因

0 投票
1 回答
269 浏览

python - 由于自定义度量函数,Keras 中出现无效的磁带状态错误

所以,我在尝试在 Keras 中实现基于 SSIM 的度量函数时遇到了一些麻烦。

我的度量函数是:

尝试编译模型时收到的错误消息如下:

InternalError:无效的磁带状态。

我已经尝试不使用@tf.function装饰器,只是得到以下错误消息:

ValueError:没有为任何变量提供梯度:['conv0/kernel:0', 'conv0/bias:0', 'conv1/kernel:0', 'conv1/bias:0', 'conv2/kernel:0', 'conv2/bias:0'、'conv3/kernel:0'、'conv3/bias:0'、'conv4/kernel:0'、'conv4/bias:0'、'deconv0/kernel:0'、'deconv0 /bias:0'、'deconv1/kernel:0'、'deconv1/bias:0'、'deconv2/kernel:0'、'deconv2/bias:0'、'deconv3/kernel:0'、'deconv3/bias :0'、'deconv4/kernel:0'、'deconv4/bias:0']。

尝试将函数中的张量转换为 NumPy 数组.numpy()也不起作用。

我正在使用 Tensorflow-GPU 2.0 和 Python 3.6。

0 投票
0 回答
41 浏览

python - 在 Python 中比较相同的图像

我正在尝试制作一个基于图像识别 Minecraft 块的程序。我目前有一个图像被切割成 16x16 图像,并与应该相同的纹理文件进行比较。我似乎找不到比较图像的好解决方案。我已经尝试过 openCV 和 Pillow,但无法获得准确的。只是寻找任何建议。

0 投票
0 回答
70 浏览

python - 图像识别:如何在执行 SSIM 之前消除背景

在使用 SSIM + Python 比较各种图像时,我发现一些非常相似的图像具有非常低的 SSIM 比率。这是图像背景与执行计算必须进行的调整大小相互作用的结果。这个问题很重要,因为我正在比较数千张图像,并且许多不同的图像具有更高的相似比,而那些图像几乎是形态学相等的。

荚 SSIM 比率 = 0.2724580796

衬衫 SSIM 比率 = 0.3111611817

我的代码:

如何在调整大小过程之前比较消除背景的图像?还有什么其他的解决方案可以实施?(自动裁剪?)有可用的库吗?

0 投票
0 回答
296 浏览

ffmpeg - 使用 FFMPEG 计算的 SSIM 值不是我所期望的

我正在尝试将 m2ts(MPEG-2 传输流)文件编码为 mp4(H.264)并获取 ssim 值。
我确实得到了一些 SSIM 值,但结果与我的预期相反。

ffmpeg 有错误的命令选项吗?

编码和 SSIM 计算命令

SSIM的结果

  • (d)(e):这些都是我所期望的。
  • (a):文件相同,但ssim≠1。
  • (b)(c):虽然图像质量不同,但 CRF=0 和 CRF=30 的 SSIM 值几乎相同。

在 HandBrakeCLI 的情况下

为了确定 input.m2ts 是否有问题,我使用与 ffmpeg 几乎相同的参数运行 HandBrakeCLI。

这一切都如我所料。(虽然 A 不是 ssim=1.0)因此,我看不到 input.m2ts 有问题。

有关视频文件和工具的信息

ffprobe 的结果

输入.m2ts

输出_ff_crf-0.mp4

output_hb_crf-0.mp4

工具

版本

  • ffmpeg:3.4.6-0ubuntu0.18.04.1
  • HandBrakeCLI:1.1.0

ldd

ffmpeg 和 HandBrakeCLI 使用相同的 libx264。

0 投票
1 回答
2153 浏览

python - 在 python 中比较两个图像时,我想获得 SSIM

我正在尝试使用“compare_ssim”功能。我目前有两个 x,y 坐标的 2xN 矩阵,其中第一行是所有 x 坐标,第二行是两个图像中每一个的所有 y 坐标。如何计算这两个图像的 SSIM(如果有办法这样做)

例如我有:

但我得到了错误

我不确定我是否遗漏了一个参数,或者我是否应该以这种函数工作的方式转换矩阵。或者,如果有一种方法可以将我的坐标转换为灰度矩阵?我对函数参数的矩阵应该是什么样子有点困惑。我知道它们应该是 ndarray,但 type(Y) 和 type(Y) 都是 numpy.ndarray。

0 投票
1 回答
80 浏览

python - 我有两个矩阵已转换为灰度图像,我想找到它们之间的平均 SSIM 值(python)

例如我有:

但是,当我这样做时

我得到错误

我试过了

但我仍然遇到同样的错误。

0 投票
0 回答
34 浏览

python - 使用 ssim 比较不同维度的图像时出错

下面是比较我正在使用的两个图像的代码:

并在调整两个图像的大小时出现以下错误:

请帮忙解决这个问题!!

0 投票
1 回答
197 浏览

python - 如何从 skimage.measure 中消除 compare_ssim 的 SSIM 图像输出中差异周围的边缘

我正在尝试编写一个代码来计算显微镜图像上轨道所占据的区域,如下所示:

带轨道的图像

由于轨道不均匀(我的意思是,它们没有独特的灰度级,因为它们在边缘较暗而在中心较亮),我不能仅通过将它们的灰度级与灰度级进行比较来做到这一点背景,因为在某些部分的轨道它是相同的。

因此,我尝试将图像与背景图像进行比较:

背景图片

我这样做是为了提取这两个图像之间的差异(对应于轨道本身)。为了做到这一点,我使用了 skimage 的 compare_ssim 函数。我使用的代码如下:

我获得的差异图像如下:

差异图像

这很好,因为现在轨道中的灰度与背景的灰度有很好的区分,并且我可以计算轨道所占据的区域(轨道中有一些点更亮,但它们是很少,这对我的目的来说没关系)。

然而,问题在于,在 diff 图像中,不仅轨迹显示为黑色,而且轨迹周围还有一个粗边框:

粗边框

这个边缘使我的面积估计不正确。所以我想知道我怎样才能消除那个边缘,或者至少让它变薄。

如果这不可能,如果您能向我展示另一个可以实现计算轨道占用区域的目的的 Python 函数,那将非常有帮助。

0 投票
1 回答
523 浏览

python-3.x - 在 TensorFlow 中使用 SSIM 损失返回 NaN 值

我正在用 MRI 图像训练一个网络,我想使用 SSIM 作为损失函数。直到现在我还在使用 MSE,一切正常。但是当我尝试使用 SSIM (tf.image.ssim) 时,我收到了一堆警告消息:

无论如何,我的代码都在运行,但没有生成任何图形。我不确定这里发生了什么或我应该去哪里看。我正在使用张量流 2.4.0。

我在此处附上我的代码摘要:

我进行了一些探索,并注意到大多数使用tf.image.ssim()as 损失函数的人都使用tf.train()了 tensorflow 1.0 或model.fit()tf.keras。我怀疑返回的 NaN 值与GradientTape()函数有关,但我不确定如何。