python电影分析,python电影评论数据分析
基于Python的图片比较原文地址-how-to: Python比较两张图片-
看了作者的原文,感觉文章很好理解。根据个人理解编译成中文,不逐句翻译。因为找不到原文图片,文末个人测试图片来自网络。
原文主要用MSE(均方误差)和SSIM(结构化相似指数)来对比图片。环境python3/opencv3原文效果图
1.图片样本
观察上面三张图,左边是原图,中间是对比度调整后的图,右边是带logo的原图。通过观察可以知道,左边和中间的图片几乎一模一样,只是颜色稍微深一点,但是算出来的MSE显示左边和右边的图像更像。下面详细介绍一下。
2.MSE和SSIM
计算两张图片的均方差,参考码如下:
DEF MSE (imagea,imageb):err=NP . sum((imagea . astype( float )-imageb . astype( float )* * 2)ERR/=float(imagea . shape[0]* imagea . shape[1])返回ERR当然
来自sk映像。measure import compare _ MSE as MSE MSE很容易实现,但是判断图片相似度的时候有个问题,图片像素值之间的差异,不代表图片内容之间的差异,比如明暗。为了解决这一问题,早在2004年,王等人就提出了结构相似性指数。
计算公式:
显然SSIM比MSE更复杂,但关键点是SSIM试图对图像结构信息中的感知变化进行建模,而MSE实际上是对感知误差的估计。。
取值范围为SSIM[-1,1],1代表完全相同。MSE因为是均方差,数值越小越一样,0代表完全相同。
SSIM撇油量的计算方法已打包直接使用。原文较早,structural_similarity已改为compare_ssim。
从skimage。衡量标准导入比较_ SSIM ASSSIM 3。新增了SK图像中mse的计算加入到图像比对中,结果表明与自构建函数的mse结果完全一致。
比较图像(imagea,imageb,title): m1=MSE (imagea,imageb) #构造函数m2=MSE _ ski (imagea,imageb) # skimage封装函数s=ssim(imageA,imageB)fig=PLT . figure(title)PLT . suptitle( MSE:% . 2f,MSE With Ski: %.2f,SSIM: %.2f%(m1,m2,s))ax=fig.add_subplot(1,2,1)plt.imshow(imageA,Cmap=plt.cm
(1)将原始图片的MSE和SSIM结果与其自身进行比较;
(2)比较调整原始图像对比度前后的MSE和SSIM结果;
(3)在将原始图像添加到标志之前和之后,比较MSE和SSIM结果;
原图和自己100%相似,所以MSE: 0,SSIM:1.0;
调整对比度前后对比,很明显图片不一样,MSE已经很大了,SSIM给出相似度0.78,那继续对比;
添加logo前后,MSE应该是大于对比度调整的,因为添加logo后图片内容发生了变化。我们可以看到调整对比度前后的MSE都变小了,SSIM给出了一个更合适的结果。
5.个人测试图片和代码参考我的github。
6.总结图片对比,可以用两种方法:MSE和SSIM。
MSE计算速度快,但是有一些缺点:(1)全图比较;(2)只处理图片的差异;
SSIM相对较慢。与全图比较相比,可以比较图片的局部信息结构。
那么用哪种方法呢?
一般来说,SSIM会给出更好的结果,但会消耗更多的资源;
在原作者看来,他更追求精准度的提高,所以更喜欢SSIM。
人是不一样的,根据自己的需求选择自己需要的方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。