检测图像是否像素化的最佳方法是什么?

2024-01-07

我试图判断图像是否像素化。我试图使用拉普拉斯方差方法来执行此操作,但我不确定它是否正常工作,因为使用我的代码返回的图像非常扭曲/像素化,方差非常高,为 1011:

import sys
import cv2
import imutils as im

csv_filename = sys.argv[1]

def variance_of_laplacian(image):
    # compute the Laplacian of the image and then return the focus
    # measure, which is simply the variance of the Laplacian
    # image = cv2.copyMakeBorder(image, 100, 100, 100, 100, cv2.BORDER_CONSTANT, value = [255, 255, 255])
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        # invert gray image
    gray = 255 - gray
    # cv2.imshow("result", gray)
    # cv2.waitKey(0)
    laplacian_var = cv2.Laplacian(gray, cv2.CV_64F).var()
    return laplacian_var

image = im.url_to_image(sys.argv[1])
laplacian_var = variance_of_laplacian(image)
print laplacian_var

是否有另一种方法来检测图像中的像素化或类似的东西?

Here is one image that I would deem pixelated/distorted/blurry for my tests: test image


我认为你的问题与“.var()”有关。我不知道那是什么。但这是使用 numpy.var() 执行您想要的操作的一种方法。

但请注意,拉普拉斯方差并不是测试像素化的好方法,除非您知道拥有相同的图像。

原始输入:

像素化输入:

import cv2
import numpy as np

# read original and pixelated image
img1 = cv2.imread('mandril3.jpg')
img2 = cv2.imread('mandril3_pixelated.png')

# convert to grayscale
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

# compute laplacians
laplacian1 = cv2.Laplacian(gray1,cv2.CV_64F)
laplacian2 = cv2.Laplacian(gray2,cv2.CV_64F)

# get variances
variance1 = np.var(laplacian1)
variance2 = np.var(laplacian2)
print ('variance of original image:', variance1)
print ('variance of pixelated image:', variance2)

# save images
cv2.imwrite('mandril3_laplacian.png', (255*laplacian1).clip(0,255).astype(np.uint8))
cv2.imwrite('mandril3_pixelated_laplacian.png', (255*laplacian2).clip(0,255).astype(np.uint8))

# show laplacian using OpenCV
cv2.imshow("laplacian1", laplacian1)
cv2.imshow("laplacian2", laplacian2)
cv2.waitKey(0)
cv2.destroyAllWindows()


原始图像的拉普拉斯:

像素化图像的拉普拉斯算子:

方差结果:

variance of original image: 4014.7300553284585
variance of pixelated image: 779.2810668945312
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测图像是否像素化的最佳方法是什么? 的相关文章

随机推荐

  • 仅对非空列进行唯一约束

    在MS SQL Server 2008中 是否可以定义UNIQUE CONSTRAINT在列上 但如果非空值则检查 IF 和 ONLY IF 也就是说 会有很多 NULL 应该被忽略 然而 对于非空值 它应该是唯一的 你需要创建一个过滤索引
  • 将基于 json 的日志转换为列格式,即每列一个文件

    日志文件示例 timestamp 2022 01 14T00 12 21 000 Field1 10 Field Doc f1 0 timestamp 2022 01 18T00 15 51 000 Field Doc f1 0 f2 1
  • Go:一个频道有多个听众

    我对 Go 还很陌生 如果主题错误 我很抱歉 但我希望你能理解我的问题 我想通过通道将事件处理到不同的 go 例程 这是一些示例代码 type Event struct Host string Command string Output s
  • 将一个旋转对象包含在另一个旋转对象中 FabricJS

    我有两个对象 一个父对象 红色 和一个子对象 蓝色 父对象是固定的 不能移动 只有子对象是可移动的 并且子对象总是比父对象大 无论以何种方式移动子对象 它都应该始终包含在子对象内部 这意味着我们永远不应该看到红色矩形 Demo https
  • Kotlin 具体化类型参数不支持智能转换

    我正在尝试设置未初始化的值 并试图让以下内容发挥作用 这主要是对具体化泛型的力量 和局限性 的好奇 我试图为数据类的可选参数提供默认值 inline fun
  • 如何将列宽度固定的 LaTeX 表格的单元格内容居中?

    考虑下面的 LaTeX 代码 begin tabular p 1in p 1in A B C D end tabular 如何使每个单元格的内容在单元格的中心而不是左侧对齐 请注意 我想确保列的宽度是固定的 因此我无法使用 c 位置属性而不
  • 使用 Linq/Lambda 将 DataTable 转换为字典

    我有一个 DataTable 我想将其转换为 C 项目中的字典 我可以使用传统的编程方式来实现目标 但它不如使用 linq lambda 那么优雅 我尝试使用 Lambda 但我陷入了如何将多行展平为 1 行的困境 我有一个用于测试目的的模
  • 在迭代列表时更改列表的最佳方法[重复]

    这个问题在这里已经有答案了 我在 python 脚本 v2 6 中有几个实例 我需要就地修改列表 我需要从列表中弹出值以响应用户的交互式输入 并且想知道执行此操作的最干净的方法 目前 我有非常肮脏的解决方案 a 将列表中我想要删除的项目设置
  • Java RMI 和同步方法

    我正在研究 分布式系统 Tanenbaum 和 Van Steen 所著 一书 他们所说的内容似乎与许多人对 Java RMI 和同步方法的看法相冲突 我的想法是使用同步方法在远程对象实现 因此在服务器上运行的实际实现 上 即使对该方法的调
  • EF6 使用命令树拦截器禁用查询计划缓存

    我在用着IDbCommandTreeInterceptor实现软删除功能 内部标准TreeCreated方法我检查给定的查询命令是否包含具有软删除属性的模型 如果他们这样做并且用户也请求获取软删除对象 我用以下命令调用我的软删除访问者que
  • 检测 Tomcat 中领域身份验证失败的原因

    我为 Tomcat 7 编写了一个自定义 Realm 我将其包装在 Tomcat 默认安装提供的锁定 Realm 中 锁定功能工作正常 但在我的 web xml 中 我有
  • 为什么我会收到源工具包服务终止错误? [复制]

    这个问题在这里已经有答案了 第二行有问题 什么 let modelURL NSBundle mainBundle URLForResource xxx withExtension momd let managedObjectModel NS
  • UITableView 重复 Firebase 数据

    我从 Firebase 收到重复的内容 但我似乎无法弄清楚我做错了什么 在 firebase 我有 6 个帖子 表格视图填充了 6 个单元格 但所有 6 个单元格都具有相同的数据 而其他 5 个帖子不存在 UITableViewCell t
  • 将键值列表转换为数据框

    我在 R 中有一个名为 国家 的键 值列表 print country CAM 1 5 TJK 1 1 SEN 1 7 键是一个国家的名称和该国家出现的值 我想将此列表转换为数据框 如下所示 country occurence 0 CAM
  • 为 Django Oscar 存储信用/虚拟货币应用程序?

    我希望为存储虚拟货币的客户建立一个商店信用模型 此商店信用应用程序将存储可用于支付产品费用的积分 在退货或某些方案中添加 是django oscar 账户 https github com django oscar django oscar
  • Delphi7 WCF方法输入参数

    我有 wcf web 服务 basicHttpBinding 我们的Delphi7客户端无法正确使用它 我已经使用 WCF 附加功能简化了 WSDL 好的 Delphi7 wsdl 导入器生成代理正确 现在我遇到了输入参数的问题 它们总是有
  • HTTP 404 与 Ajax.ActionLink

    我无法解决 404 错误 Global asax cs 中的默认路由 routes MapRoute Default controller action id new controller Home action Index id UrlP
  • SQL 或 LINQ:如何选择仅一个参数发生变化的记录?

    假设我们有这个列表 Id IdRef myColumn anotherColumn 448 70 1 228 449 70 1 2s8 451 70 1 228 455 70 2 2a8 456 70 2 s28 457 70 2 28 4
  • 匹配嵌套大括号的正则表达式

    我需要正则表达式来匹配正确的大括号 例如每个开一闭一abc abc bc xyz 我需要它 从中获取一切 abc bc xyz 没有得到 abc bc 我尝试使用 这对于正则表达式来说是不可能的 为此需要上下文无关语法 并且正则表达式仅适用
  • 检测图像是否像素化的最佳方法是什么?

    我试图判断图像是否像素化 我试图使用拉普拉斯方差方法来执行此操作 但我不确定它是否正常工作 因为使用我的代码返回的图像非常扭曲 像素化 方差非常高 为 1011 import sys import cv2 import imutils as