问题标签 [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.
python - 使用 SSIM ,尝试比较图像并尝试分别获取亮度、对比度和结构
我在 python 中使用 SSIM 并尝试比较图像。
当我们使用内置时skimage.metrics import structural_similarity
,我们将获得 SSIM 分数。但我想要分别获得亮度、对比度和结构分数,以便深入了解图像
我已经通过以下方式更改了内置库:
在下面的代码中:原始 - 是内置的 Lib 代码。补充,是修改后的代码
当我调用函数时
我得到的结果是
*
*
我不明白,为什么“S”是 0.55。而 SSIM 是 1.0?是意料之中的。如果可以预期是什么原因
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。
python - 在 Python 中比较相同的图像
我正在尝试制作一个基于图像识别 Minecraft 块的程序。我目前有一个图像被切割成 16x16 图像,并与应该相同的纹理文件进行比较。我似乎找不到比较图像的好解决方案。我已经尝试过 openCV 和 Pillow,但无法获得准确的。只是寻找任何建议。
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。
python - 在 python 中比较两个图像时,我想获得 SSIM
我正在尝试使用“compare_ssim”功能。我目前有两个 x,y 坐标的 2xN 矩阵,其中第一行是所有 x 坐标,第二行是两个图像中每一个的所有 y 坐标。如何计算这两个图像的 SSIM(如果有办法这样做)
例如我有:
但我得到了错误
我不确定我是否遗漏了一个参数,或者我是否应该以这种函数工作的方式转换矩阵。或者,如果有一种方法可以将我的坐标转换为灰度矩阵?我对函数参数的矩阵应该是什么样子有点困惑。我知道它们应该是 ndarray,但 type(Y) 和 type(Y) 都是 numpy.ndarray。
python - 我有两个矩阵已转换为灰度图像,我想找到它们之间的平均 SSIM 值(python)
例如我有:
但是,当我这样做时
我得到错误
我试过了
但我仍然遇到同样的错误。
python - 使用 ssim 比较不同维度的图像时出错
下面是比较我正在使用的两个图像的代码:
并在调整两个图像的大小时出现以下错误:
请帮忙解决这个问题!!
python - 如何从 skimage.measure 中消除 compare_ssim 的 SSIM 图像输出中差异周围的边缘
我正在尝试编写一个代码来计算显微镜图像上轨道所占据的区域,如下所示:
由于轨道不均匀(我的意思是,它们没有独特的灰度级,因为它们在边缘较暗而在中心较亮),我不能仅通过将它们的灰度级与灰度级进行比较来做到这一点背景,因为在某些部分的轨道它是相同的。
因此,我尝试将图像与背景图像进行比较:
我这样做是为了提取这两个图像之间的差异(对应于轨道本身)。为了做到这一点,我使用了 skimage 的 compare_ssim 函数。我使用的代码如下:
我获得的差异图像如下:
这很好,因为现在轨道中的灰度与背景的灰度有很好的区分,并且我可以计算轨道所占据的区域(轨道中有一些点更亮,但它们是很少,这对我的目的来说没关系)。
然而,问题在于,在 diff 图像中,不仅轨迹显示为黑色,而且轨迹周围还有一个粗边框:
这个边缘使我的面积估计不正确。所以我想知道我怎样才能消除那个边缘,或者至少让它变薄。
如果这不可能,如果您能向我展示另一个可以实现计算轨道占用区域的目的的 Python 函数,那将非常有帮助。
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()
函数有关,但我不确定如何。