脑子突然石了,一个小逻辑没转过弯来

2021-07-22 15:55:25 +08:00
 imn1
写了两天图片比较程序,都被各种小问题卡住,思绪凌乱

两幅图 A 和 B,尺寸接近或相等,已知一副是另一幅裁切出来的,就是裁切后放大到跟原图接近,但并不知道是哪一幅

取其中一副(假设 A ),从中心想周围取约 80%幅面,作为 template,B 的部分与这个 template 匹配成功
确认 AB 关联(实际上是个从图集中寻找 B 图的过程)

因为有缩放的原因,template 在匹配过程也有缩放比率,最后匹配成功的比率是 R

现在根据条件:
1.R 的大小(<1, =1, >1)
2.template 来自 A
能否确认 A,B 中哪幅是裁切后的呢?
1145 次点击
所在节点    问与答
9 条回复
zxCoder
2021-07-22 15:59:08 +08:00
如果 A 是裁切后放大的,那么取 template 必须缩小才能和 B 匹配,所以 R<1
如果 B 是裁切后放大的,A 是原图,那么取 template 必须放大才能和 B 匹配,所以 R>1
mcone
2021-07-22 16:12:59 +08:00
没看太明白你的描述,既然“匹配成功的比率是”是 R,R 难道不应该永远小于 1 么……

另外我想确认一下你的匹配算法是怎么写的,按道理有很多 scale invariant 的 feature,两张图先给匹配上,再通过两张图四周的关键点进行配准,虽然笨一些,还是能找到的啊……
coderluan
2021-07-22 16:21:44 +08:00
楼主的解决方案没看明白, 但是需求明白了, 感觉不要这么麻烦吧, 只要取两个图的某些特征值, 最简单的比如颜色范围, 然后对比特征值的范围就行了, 哪个大范围大哪个是原图.
imn1
2021-07-22 16:56:01 +08:00
@mcone #2
因为不知道是哪一幅是裁切后的,所以取样时可能可能从原图取样,参看#1,这时 R>1

@coderluan #3
一个图集里面可能很多图是相似的,例如连拍,很可能几幅图之间只是轻微变化
这种非最后成品的图集现在很多的,例如商业硬照,往往连拍几张或者换一点角度再拍,然后从几张里面挑选感觉最好的作为作品
毕竟现在存储卡都不贵,不像以前那样要省胶卷,摆好了才拍
例如人脸的表情不同,但姿势一样;例如跑步连拍只是位置不同,跑姿几乎一样

取某些特征的话,误判率高;另外是效率问题,如果两组图各有 1K 张,特征算法比模板算法慢很多
我现在遇到最大问题还不是算法选择,而是图片方向问题,在没有 exif 时,还要旋转再比较一次,现在很头痛怎么解决
coderluan
2021-07-22 16:59:54 +08:00
@imn1

"两幅图 A 和 B,尺寸接近或相等,已知一副是另一幅裁切出来的,就是裁切后放大到跟原图接近,但并不知道是哪一幅"

"一个图集里面可能很多图是相似的,例如连拍,很可能几幅图之间只是轻微变化
这种非最后成品的图集现在很多的,例如商业硬照,往往连拍几张或者换一点角度再拍,然后从几张里面挑选感觉最好的作为作品
毕竟现在存储卡都不贵,不像以前那样要省胶卷,摆好了才拍
例如人脸的表情不同,但姿势一样;例如跑步连拍只是位置不同,跑姿几乎一样"

你感觉自己两次说的是一回事吗.......发帖提问怎么还带改需求的.......
imn1
2021-07-22 17:10:08 +08:00
@coderluan #5
没有改需求,只是描述了一下“实际上是个从图集中寻找 B 图的过程”这句话
对应你说的特征提取,难以完成上面的需求(最后一句)

你可以说说特征方法如何“确认 A,B 中哪幅是裁切后的”,如果可行我一定试一下的,这几天都试了十几种方案了,多试一种长点知识也是收获
coderluan
2021-07-22 17:23:52 +08:00
@imn1 原文不就两张图, 哪来的图集, 我现在基本上不明白你想干什么了, 至于我说的, 假设就 A 和 B, 一个是从另一个裁剪出来的, 可以算直接把颜色转成 HSV 统计范围, 哪个小哪个是裁剪的吧, 或者转成灰度图看直方图曲线, 哪个更平滑哪个是裁剪的, 拿这些做特征, 并不是特征值算法, 怎么都比你那个需要动态调范围的快吧, 毕竟你只要确定哪个是裁剪的, 而不是要确定从什么位置裁剪的啊.
imn1
2021-07-22 17:55:48 +08:00
@coderluan #7
好吧,是我说的不够详细,并非只有两张
流程就是两个图集(各数百上千张),通过特征算法找出相似的各几十张,然后两两模板比较匹配 True/False,False 跳过,True 时同时获得 R,这时我想确定哪张是裁切的,不想交换再计算一次

就是还是要判断匹配先行,模板能比较准确到唯一一张,虽然会漏判,但 True 的误判很低,所以用了它
HSV 较早时试过,不能得到唯一(多张图都返回 True ),所以较早放弃了,我再试试提高临界值,毕竟 HSV 速度较快

BTW,我是想写出通用的程序,并不是单个任务完成这个程序就没用了,手上还有几十万个图集,当然大部分是可以无需计算就简单判断出 False 的,不过就算几十个都无法靠肉眼,所以需要一个以后都可以用的程序
sadfQED2
2021-07-22 18:53:06 +08:00
你直接放两个 demo 图片出来吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/791078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX