我在PHP中开发了一种简单快速的算法来比较图像的相似性.
其快速(800x600图像每秒约40个)以及未经优化的搜索算法可以在22分钟内完成3,000张图像,将每张图像与其他图像进行比较(3 /秒).
基本概述是获取图像,将其重新调整为8x8,然后将这些像素转换为HSV.然后将Hue,Saturation和Value截断为4位,它变成一个大的十六进制字符串.
比较图像基本上沿着两个字符串,然后添加它找到的差异.如果总数低于64,那么它的图像相同.不同的图像通常在600 - 800左右.低于20和极其相似.
我可以使用这个型号有什么改进吗?我还没有看到不同组件(色调,饱和度和值)与比较的相关性.顺化可能很重要,但其他人呢?
为了加快搜索速度,我可能会将每个部分的4位分成两半,并将最重要的位先放入,这样如果它们检查失败,则根本不需要检查lsb.我不知道一种有效的方法来存储这样的位,但仍然允许它们被轻松搜索和比较.
我一直在使用3000张照片的数据集(大多数是独一无二的)并没有任何误报.它完全不受调整大小和相当的亮度和对比度变化的抵抗力.
使用<canvas>标签我需要能够在多边形中绘制一个洞.
现在我有一些非常简单的东西,使用beginPath()然后为每个点执行lineTo().然后填充fill().
我看不到有任何方法可以将填充的多边形与未填充的中间区域相比,例如甜甜圈.我不是做甜甜圈,但它适合这个例子.
有什么我想念的吗?我宁愿不画它完全填充然后必须重绘中间.
我正在使用基本的sin和cos操作2D地图非常成功地给出了3d透视图.
我遇到的问题是我试图找到视口中可见的内容.有效地进行反向转换,输出为[0,0]和[宽度,高度],我想知道我的地图上的那些点位于何处.
我已经到了试图扭转的地步:
display_x = (source_x * cos(z)) + (source_y * sin(z))
display_y = (source_y * cos(z)) - (source_x * sin(z))
Run Code Online (Sandbox Code Playgroud)
如果我知道display_x和display_y和source_x和source_y是未知的,我怎么能解决未知是什么?我的联立方程知识有点生疏.