1
zxCoder 2021-07-22 15:59:08 +08:00 1
如果 A 是裁切后放大的,那么取 template 必须缩小才能和 B 匹配,所以 R<1
如果 B 是裁切后放大的,A 是原图,那么取 template 必须放大才能和 B 匹配,所以 R>1 |
2
mcone 2021-07-22 16:12:59 +08:00 1
没看太明白你的描述,既然“匹配成功的比率是”是 R,R 难道不应该永远小于 1 么……
另外我想确认一下你的匹配算法是怎么写的,按道理有很多 scale invariant 的 feature,两张图先给匹配上,再通过两张图四周的关键点进行配准,虽然笨一些,还是能找到的啊…… |
3
coderluan 2021-07-22 16:21:44 +08:00 1
楼主的解决方案没看明白, 但是需求明白了, 感觉不要这么麻烦吧, 只要取两个图的某些特征值, 最简单的比如颜色范围, 然后对比特征值的范围就行了, 哪个大范围大哪个是原图.
|
4
imn1 OP @mcone #2
因为不知道是哪一幅是裁切后的,所以取样时可能可能从原图取样,参看#1,这时 R>1 @coderluan #3 一个图集里面可能很多图是相似的,例如连拍,很可能几幅图之间只是轻微变化 这种非最后成品的图集现在很多的,例如商业硬照,往往连拍几张或者换一点角度再拍,然后从几张里面挑选感觉最好的作为作品 毕竟现在存储卡都不贵,不像以前那样要省胶卷,摆好了才拍 例如人脸的表情不同,但姿势一样;例如跑步连拍只是位置不同,跑姿几乎一样 取某些特征的话,误判率高;另外是效率问题,如果两组图各有 1K 张,特征算法比模板算法慢很多 我现在遇到最大问题还不是算法选择,而是图片方向问题,在没有 exif 时,还要旋转再比较一次,现在很头痛怎么解决 |
5
coderluan 2021-07-22 16:59:54 +08:00 2
@imn1
"两幅图 A 和 B,尺寸接近或相等,已知一副是另一幅裁切出来的,就是裁切后放大到跟原图接近,但并不知道是哪一幅" "一个图集里面可能很多图是相似的,例如连拍,很可能几幅图之间只是轻微变化 这种非最后成品的图集现在很多的,例如商业硬照,往往连拍几张或者换一点角度再拍,然后从几张里面挑选感觉最好的作为作品 毕竟现在存储卡都不贵,不像以前那样要省胶卷,摆好了才拍 例如人脸的表情不同,但姿势一样;例如跑步连拍只是位置不同,跑姿几乎一样" 你感觉自己两次说的是一回事吗.......发帖提问怎么还带改需求的....... |
6
imn1 OP @coderluan #5
没有改需求,只是描述了一下“实际上是个从图集中寻找 B 图的过程”这句话 对应你说的特征提取,难以完成上面的需求(最后一句) 你可以说说特征方法如何“确认 A,B 中哪幅是裁切后的”,如果可行我一定试一下的,这几天都试了十几种方案了,多试一种长点知识也是收获 |
7
coderluan 2021-07-22 17:23:52 +08:00 1
@imn1 原文不就两张图, 哪来的图集, 我现在基本上不明白你想干什么了, 至于我说的, 假设就 A 和 B, 一个是从另一个裁剪出来的, 可以算直接把颜色转成 HSV 统计范围, 哪个小哪个是裁剪的吧, 或者转成灰度图看直方图曲线, 哪个更平滑哪个是裁剪的, 拿这些做特征, 并不是特征值算法, 怎么都比你那个需要动态调范围的快吧, 毕竟你只要确定哪个是裁剪的, 而不是要确定从什么位置裁剪的啊.
|
8
imn1 OP @coderluan #7
好吧,是我说的不够详细,并非只有两张 流程就是两个图集(各数百上千张),通过特征算法找出相似的各几十张,然后两两模板比较匹配 True/False,False 跳过,True 时同时获得 R,这时我想确定哪张是裁切的,不想交换再计算一次 就是还是要判断匹配先行,模板能比较准确到唯一一张,虽然会漏判,但 True 的误判很低,所以用了它 HSV 较早时试过,不能得到唯一(多张图都返回 True ),所以较早放弃了,我再试试提高临界值,毕竟 HSV 速度较快 BTW,我是想写出通用的程序,并不是单个任务完成这个程序就没用了,手上还有几十万个图集,当然大部分是可以无需计算就简单判断出 False 的,不过就算几十个都无法靠肉眼,所以需要一个以后都可以用的程序 |
9
sadfQED2 2021-07-22 18:53:06 +08:00 via Android
你直接放两个 demo 图片出来吧
|