异常检测中的误差热力图画法

在视频异常检测中,对于实验结果的描述通常是有ROC曲线、PSNR曲线、真实视频帧与预测异常帧之间的误差热力图。之前的文章讲了自己制作ROC曲线,可以看这里把多个ROC曲线画在一张图上_weixin_44323744的博客-CSDN博客_多条roc曲线绘制在一张图https://blog.csdn.net/weixin_44323744/article/details/125488109?spm=1001.2014.3001.5502

这篇文章讲讲怎么画误差热力图,在文献中看到的都是这样子的效果:

真实视频帧,误差热力图
真实视频帧                                   误差热力图

真实视频帧                                   误差热力图

所以,我们怎么制作呢?

1. 数据准备

首先需要有真实视频帧模型生成的视频帧 。这两个数据是必须要有的。模型生成的视频帧可以保存为npy文件格式,自行转为numpy.array格式。

2. 代码

注意:在制作热力图是,必须把图像转为灰度,否则达不到背景蓝色,异常位置为突出颜色的效果。(大坑无踩!!!)

from PIL import Image
import numpy as np
import cv2
import numpy as np
import matplotlib.pyplot as plt
import  matplotlib
from PIL import Image
from skimage import io, transform, color

# 1.读取gt图片,并转为灰度图像
rgbImg=cv2.imread('gt.png')
img_gt=cv2.cvtColor(rgbImg, cv2.COLOR_BGR2GRAY)

# 2.读取生成的图片,并转为灰度图像
rgb = io.imread('pred.png')  # 读取图片
img_pred = color.rgb2gray(rgb)


# 3.开始进行制作误差热力图
A_img = img_gt
B_img = img_pred

#选取需要计算差值的两幅图片
dimg1 = A_img[:, :]
#归一化
dimg1_2 = np.zeros(dimg1.shape, dtype=np.float32)
cv2.normalize(dimg1, dimg1_2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
# 显示选取的图像
plt.figure()
plt.imshow(dimg1_2, cmap='gray')
plt.show()

dimg2 = B_img[:, :]
dimg2_2 = np.zeros(dimg2.shape, dtype=np.float32)
cv2.normalize(dimg2, dimg2_2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
plt.figure()
plt.imshow(dimg2_2,cmap='gray')
plt.show()

d = abs(dimg1_2-dimg2_2)*1

fig = plt.figure(dpi=200)
plt.figure(num=1)
cnorm = matplotlib.colors.Normalize(vmin=0, vmax=1)
m = matplotlib.cm.ScalarMappable(norm=cnorm, cmap=matplotlib.cm.jet)
m.set_array(d)
plt.imshow(d, norm=cnorm, cmap="jet")
plt.axis("off")
plt.colorbar(m)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.margins(0, 0)
plt.savefig('test.png' , bbox_inches='tight', dpi=400,pad_inches=0)

3. 模型生成的图像数据保存为npy格式

把模型生成的图像数据保存为npy格式的解决方法,后续更新。但是方法不变,把两个对比的图像数据转为numpy.array即可。

参考:(4条消息) (8)Python计算并显示差值图像_qq_42392677的博客-CSDN博客_python图像差值

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值