如图,当有两张图,左边为源文件,右边为剪裁(且等比拉伸)后的图片
请问如何通过程序来判断右图位于左图什么位置(例如返回四个角坐标)
1
gwy15 2020-06-25 14:54:27 +08:00 2
SIFT, SURF, etc.
|
2
hackpro 2020-06-25 14:56:26 +08:00 via iPad
YOLO
|
3
vicsun2020 2020-06-25 15:00:45 +08:00 via iPhone
都导入成 rgb 数组然后写循环判断成不成😂😂
是不是太土了,楼上都是现成的库吗 |
4
TtiGeR 2020-06-25 15:00:45 +08:00 via iPhone
|
5
vertigo OP @vicsun2020 土完全没关系,能解决问题即可,但是不知道拉伸是否会增加 rgb 色块。。。(我没有搞过图像内容)
|
7
lithbitren 2020-06-25 15:08:36 +08:00
涉及拉伸用循环大概率是不行的,最好还是用现成的模糊匹配库
|
8
xmoiduts 2020-06-25 15:16:36 +08:00 via Android
hog 特征+滑动窗口匹配?(我瞎猜的 最近被 hog 折磨得不行……)
|
10
vertigo OP 对了,如果有大佬有方案,也可以付费 邮箱 bGlkYW1hb0BkaWFuZ2V6YW4ubWU=
|
11
imn1 2020-06-25 15:34:20 +08:00 1
右图不存在的话是个难题,右图已存在的话是个送分题,不对,送钱题
主要问题是程序不知道你要抠什么 |
12
ctolib 2020-06-25 15:39:22 +08:00 via Android
你看一下,模板匹配算法是不是可以解决你的问题
|
13
tiancaixiaoshuai 2020-06-25 15:47:52 +08:00 1
以后从网上找素材可要小心了,一定要确定好版权问题。
资源站又多了一个发财致富的路:批量扫全网网站,匹配图片,发送律师函,$$$cha-ching ! |
14
TimePPT 2020-06-25 16:01:01 +08:00 via Android
六年前在某视频网站做过视频自动抽帧截图做封面,当时上了机器学习做重点内容区域识别(不用识别具体实体是啥)。大概一千张的成对训练集就能做到很好的效果。
现在估计有更好的算法实现了。 |
15
JCZ2MkKb5S8ZX9pq 2020-06-25 16:11:14 +08:00
cv2 ?好像网易那个测试工具就有全屏找图返坐标的,现成端口,我记得是返中心点。
|
16
zmlu 2020-06-25 16:14:07 +08:00 via iPhone
OpenCV
|
17
vertigo OP @JCZ2MkKb5S8ZX9pq 网易有现成的么?请问还记得叫什么嘛
|
18
vertigo OP @tiancaixiaoshuai 兄弟这是啥啊..
|
20
JCZ2MkKb5S8ZX9pq 2020-06-25 16:36:41 +08:00
|
21
JCZ2MkKb5S8ZX9pq 2020-06-25 16:38:00 +08:00
@vertigo 但你的需求不知道合不合适用它这个,它是个测试框架。可以翻翻它的 github,感觉可能就是 cv2 。
|
22
cnt2ex 2020-06-25 16:39:49 +08:00
相关滤波算法
尺度可以把图片变换到 logpolar 空间估计 |
23
cnt2ex 2020-06-25 16:42:47 +08:00
其实还可以用目标检测的方法。直接用深度学习的那堆模型检测两个图片中物体的坐标 x,y,w,h,再用模板匹配。
|
24
vertigo OP @JCZ2MkKb5S8ZX9pq 卧槽牛逼
|
26
tiancaixiaoshuai 2020-06-25 17:17:42 +08:00
@vertigo $是美元,代表钱,cha-ching 是模仿收银机的声音,代表钱进账
很多网站的图片素材都是从网上找的,然后把原图切一下拉到合适的尺寸自己用,或者就是单纯的截一部分,假装跟原图不一样。从网上找到的图片所在网站本身可能就是盗的图,并不能以此确定这张图片是否可以商用,如果使用了这种图片,被原创者发现,就要交钱(版权费) 那么,一些做图片资源的网站,例如某觉中国,使用了你说的这个技术,批量扫描全网的网站,把图片拿来跟自己的数据库对比,找出盗图的网站、相关图片、以及相关图片截取了自己图片的哪个位置,发送律师函,收钱 |
27
SharkU 2020-06-25 17:31:38 +08:00
@tiancaixiaoshuai 有道理
|
28
jmc891205 2020-06-25 17:47:19 +08:00 via iPhone
与 scale 和 rotation 无关的 template matching 算法
你预算多少? |
29
dick20cm 2020-06-25 18:54:04 +08:00
与 scale 和 rotation 无关的 template matching 算法,简单的一批
|
32
cz5424 2020-06-25 23:03:25 +08:00 via iPhone
做过类似的需求,来确定视频中水印位置,用得是 opencv 的 SIFT
|
33
supermoonie 2020-06-25 23:14:26 +08:00
@vertigo 我有一个 OpenCV 的群,群主是贾志刚,51CTO 里的讲师,需要的话,我可以帮你
|
34
gorillazksl 2020-06-25 23:35:46 +08:00
|
35
CoCoMcRee 2020-06-25 23:39:09 +08:00
模糊匹配, 很好奇你是想用在什么场景下.
我之前也游戏脚本时用过这个. |
36
imn1 2020-06-25 23:55:11 +08:00
右图存在的话,就几行而已
def compTmpl(image, target): img_rgb = cv2.imread(image) img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) template = target w, h = template.shape[::-1] res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED) threshold = 0.9 loc = numpy.where( res >= threshold) return loc threshold 是临界值,自己按需要调整 |
37
gorillazksl 2020-06-26 00:04:54 +08:00
@imn1 Opencv 的 matchTemplate 是没有考虑到 scale 和 rotation 的 所以只有在没有 scale 和 rotation 的前提下才会比较 work
|
38
nightwitch 2020-06-26 00:21:42 +08:00
右图是已知的,或者有近似的模板,搜关键词 模板匹配(template matching)
如果你只有左图,想从中扣出一些物体所在的区域,搜关键词 目标检测, 比较容易的( FRNN, YOLOv3) |
39
imn1 2020-06-26 00:27:37 +08:00
@gorillazksl #37
如果尺寸相差不太大,还是可以的 我经常用这招找图,在图 1 中随机在图中心附近画一个不太大矩形,然后用这个矩形去一堆图里面找(尺寸不同,但基本接近),输出匹配,比起 imgHash 更好使,因为 imgHash 在: 1.出现比较大幅的裁边,或者加厚框 2.比例相差大 3.大水印 这些情况,不容易匹配上 重点是最终我还是要肉眼判定,程序只是找出来而已,纯自动化我心还没那么大 至于旋转,看需求可以添加代码,cv2 就是个矩阵而已,平常没必要想太多,毕竟人眼不能旋转看图,大部分情况两幅图是同向的,旋转的情况不多 |
40
cht 2020-06-26 02:23:17 +08:00
SIFT 正解
|
41
poringking 2020-06-26 03:02:32 +08:00
这个问题叫 direct image alignment,如果不改变比例,那参数就是平移,2 个自由度,如果改变比例,那再加两个自由度,可以用 lucas kanade 算法,用其中的 inverse compositional lk 最快,只用算 template 的 jacobian 。
|
42
lunafreya 2020-06-26 03:22:28 +08:00 via iPhone
专业 cv 人来答一下,这个非常简单,不需要高级操作。你只需要找到几个对应点的位置(你的仿射变换有几个自由度就找几个点),然后算出仿射变换的参数即可。
|
43
RadishWind 2020-06-26 10:31:13 +08:00
opencv 的 template 匹配,之前做脚本的时候玩过
|
44
ctro15547 2020-06-26 10:43:21 +08:00
如果只是以图找图的话 opencv 就行。百度下几行代码的事情。
|
45
gargar 2020-06-26 13:02:02 +08:00
有些情况不太好确定四角坐标:
抠出的图是不规则区域; 由原图多个部分拼接的。 |