就是给出以下几个function的def 越多越好:
1、 red_average(Picture) 算出pic众pixels的平均红值 。
2、scale_red(Picture, int) 调整图片红值 并确保其不超过255 。
3、expand_width(Picture, int) 。
4、reduce_width(Picture, int) 放大和缩小宽值 都是乘或者除的 ,distance(Pixel, Pixel) 以红蓝绿值为标准 计算两个pixel之间的距离(类似于xyz坐标轴中两点距离)。
5、simple_difference(Picture,Picture) 简单计算两张图片有多相似 不必考虑长宽。
6、smart_difference(Picture,Picture) 这个方程的步骤需为: 判断图片大小 。如必要 乘除高度 。 如必要 乘除宽度。 调整图片颜色使之相同平均红蓝绿值 。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。
代码首先,读入TuriCreate软件包
import turicreate as tc
我们指定图像所在的文件夹image,让TuriCreate读取所有的图像文件,并且存储到data数据框
data = tc.image_analysis.load_images('./image/')
我们来看看,data数据框的内容:
data
data包含两列信息,第一列是图片的地址,第二列是图片的长宽描述。
下面我们要求TuriCreate给数据框中每一行添加一个行号。这将作为图片的标记,方便后面查找图片时使用,并输出查看data。
data = data.add_row_number()
data
下面,是重头戏。我们让TuriCreate根据输入的图片集合,建立图像相似度判别模型。
model = tc.image_similarity.create(data)
这个语句执行起来,可能需要一些时间。如果你是第一次使用TuriCreate,它可能还需要从网上下载一些数据。请耐心等待。
经过或长或短的等待,模型已经成功建立。
下面,我们来尝试给模型一张图片,让TuriCreate帮我们从目前的图片集合里,挑出最为相似的10张来。
为了方便,我们就选择第一张图片作为查询输入。
我们利用show()函数展示一下这张图片。
tc.Image(data[0]['path']).show()
下面我们来查询,我们让模型寻找出与这张图片最相似的10张。
similar_images = model.query(data[0:1], k=10)
我们把结果存储在了similar_images变量里面,下面我们来看看其中都有哪些图片。
similar_images
返回的结果一共有10行。跟我们的要求一致。
每一行数据,包含4列。分别是:
查询图片的标记
获得结果的标记
结果图片与查询图片的距离
结果图片与查询图片近似程度排序值
有了这些信息,我们就可以查看到底哪些图片与输入查询图片最为相似了。
注意其中的第一张结果图片,其实就是我们的输入图片本身。考虑它没有意义。
我们提取全部结果图片的标记(索引)值,忽略掉第一张(自身)。
similar_image_index = similar_images['reference_label'][1:]
把上面9张图片的标记在所有图片的索引列表中过滤出来:
filtered_index = data['id'].apply(lambda x : x in similar_image_index)
filtered_index
验证完毕以后,请执行以下语句。我们再次调用TuriCreate的explore()函数,展现相似度查询结果图片。
data[filtered_index].explore()
这个事情的基本思路是先将这个图片分成两个图片,具体步骤如下
这两个图片应该是一个大一个小,然后将小的那个作为基准,计算出小的那个图的灰度(称为A),然后将将大的那个按小的这个尺寸分成N个,分别计算着N个的灰度。
计算两个灰度图像之间的结构相似度指数,其实就是计算A和那N个小图的结构相似度指数。
通过这个结构相识度的数据,我们基本可以判断A是不是包含了相同图像的一部分,如果不是的话,将这个小的图移动到相邻的部分,然后重复1,2. 当计算完全部以后,找到机构相似度最高的那两个图,基本上相同图形就在这两个里面了。
里面的话,你需要用到openCV 和 Python 两个工具以及scikit-image和imutils。具体安装的流程你可以搜索一下。