这张图的另ps截取图片一部分分

发生了一个美丽而个性的错误:
没有找到你要找的页面!
可能的原因如下:
贵手可能键入的地址有误(个性网认为你永远是正确的)
个性网把这个页面遗失了(小编罚站中......)
网络上又堵塞了(电信网通对小编白眼......)progLan编程语言(666)
ide lib framework类库框架(593)
Atitit 判断判断一张图片是否包含另一张小图片&
1.&keyword
图片是否另外一张图片的一部分
如果是标准图片,模板匹配就好
2.&&模板匹配是在图像中寻找目标的方法之一(切割+图像相似度计算)
。Come On, Boy.我们一起来看看模板匹配到底是怎么回事。
模板匹配的工作方式
模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。
假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:
(1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
(2)用临时图像和模板图像进行对比,对比结果记为c;
(3)对比结果c,就是结果图像(0,0)处的像素值;
(4)切割输入图像从(0,1)至(10,11)的临时图像,对比,并记录到结果图像;
(5)重复(1)~(4)步直到输入图像的右下角。
大家可以看到,直方图反向投影对比的是直方图,而模板匹配对比的是图像的像素值;模板匹配比直方图反向投影速度要快一些,但是我个人认为直方图反向投影的鲁棒性会更好。
3.&匹配效果
效果不错,基本可以确定查找到对应的区域坐标。。对于彩色图片,可以使用色彩空间信息排除掉其他错误的匹配图片,几乎可以精确的确定一个图片了。。
4.&图片相似度的算法(感知哈希算法”Perceptual
hash algorithm)
感知哈希算法”Perceptual hash algorithm),它的作用是对每张图片生成一个“指纹”()字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。
下面是一个最简单的实现:
第一步,缩小尺寸。将图片缩小到的尺寸,总共个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。将缩小后的图片,转为级灰度。也就是说,所有像素点总共只有种颜色。
第三步,计算平均值。计算所有个像素的灰度平均值。
第四步,比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为;小于平均值,记为。
第五步,计算哈希值。将上一步的比较结果,组合在一起,就构成了一个位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
得到指纹以后,就可以对比不同的图片,看看位中有多少位是不一样的。在理论上,这等同于计算“汉明距离”。如果不相同的数据位不超过,就说明两张图片很相似;如果大于,就说明这是两张不同的图片。
5.&性能结果
在我机子上,语言java
,纯java实现。匹配变换dct算法size 8
每次移动step=5 &。。使用了并行库。。
速度大概在120s。。懒得继续调整性能了,主要是测试思路,不过总结了思路,暂时先用着,理想的目标应该在3秒内。。
这个是参考文章的说法大概70秒。。语言是c#调用opencv接口
模板匹配和直方图反向投影的效率
总的来说,模板匹配和直方图反向投影的效率都不高。在我的机器上,在大小的输入图像上匹配104*132的大小的模板图像(都是单通道灰度图像),大约需要700毫秒;而直方图反向投影大约需要75000毫秒(1.25分钟)。看来还需要继续学习,寻找更好的处理方法
6.&如何提升性能
主要算法消耗在匹配小图片上。。
6.1.&可以采用简化的算法。二次匹配法,先大概确定区域
。首先可以大幅度的就确定几张疑似图像坐标。。然后对疑似图像进行高精度算法匹配,就可以几乎匹配到唯一的一张。。如果图片是彩色图片,再使用颜色信息二次匹配相似度。。以及直方图等算法补充来匹配。。
6.2.&切割图片设置一个step
比如要寻找的图片大小60*60,可以设置一个20%以内的不敬step来跳跃切割,可以大幅度提升性能,
60/0.05=12.。 可以立马提升12倍的性能。。
然后大概选定了区域后,在使用精确移动step来切割图片。
7.&参考资料
如何判断一张图片是否包含另一张小图片?图像匹配?-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html
模板匹配(Match Template) - Wuya -
博客园.html
算法 - JPEG的DCT压缩原理,谁能通俗易懂解释一下?
- SegmentFault.html
作者::&绰号:老哇的爪子&(&全名::Attilax&Akbar&Al&Rapanui&阿提拉克斯&阿克巴&阿尔&拉帕努伊&)&
汉字名:艾提拉(艾龙),&&&EMAIL:
转载请注明来源:&http://blog.csdn.net/attilax
8.&------code
private&void&t()
throws&IOException {
String big&=
&c:\\t.jpeg&;
String lit&=
&c:\\lit.jpg&;
BufferedImage lit_img&= ImageIO.read(new&File(lit));
lit_img.getWidth();
lit_img.getHeight();
imgx imgx&=
new&imgx();
BufferedImage img&= ImageIO.read(new&File(big));
int&width&=
img.getWidth();
img.getHeight();
ImagePHash imagePHash&=
new&ImagePHash(8, 8);
ImageReader ImageReader1&=
imgx.ImgReader(new&File(big));
String ext&= filex.getExtName(big);
imgx.save(lit_img,
&c:\\0tmpPic\\&&+ filex.getUUidName()
+ &.&&+
ExecutorService es=Executors.newFixedThreadPool(3);
for&(int&i&=
i&+ 5) {
for&(int&j&=
j&+ 5) {
// BufferedImage
// (BufferedImage) imgx.cutImage_retImg(big,
// i, j, w2, h2);
n++;
int&nowCount=n;
Runnable ra&= () -& {
process(lit_img,
imagePHash,
ImageReader1,
es.execute(ra);
es.shutdown();
private&int&process(BufferedImage
imgx imgx,
ImagePHash imagePHash, ImageReader
ImageReader1,
String ext,
Rectangle rect&=
new&java.awt.Rectangle(i,
BufferedImage tmp&=
imgx.cutImg(rect,
ImageReader1);
imagePHash.distance(tmp,
log.info(& count:&&+
String.valueOf(n)
+ & dis:&
+ String.valueOf(dis)
+ & rect:&&+ String.valueOf(i)
+ String.valueOf(j));
String out&=
&c:\\0tmpPic\\&&+ filex.getUUidName()
+ &.&&+
imgx.save(tmp,
log.info(& count:&&+
String.valueOf(n)
+ & dis:&
+ String.valueOf(dis)
+ & rect:&&+ String.valueOf(i)
+ String.valueOf(j)
+ & file:&&+
100 == 0) {
String count&= String.valueOf(cnt);
log.info(& count:&&+
count&+
& dis:&&+ String.valueOf(dis)
+ & rect:&&+ String.valueOf(i)
+ &_&&+ String.valueOf(j));
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2744659次
积分:46900
积分:46900
排名:第59名
原创:2064篇
评论:280条
提供相关技术咨询,以及解决方案编制,编制相关标准化规范草案,软件培训与技术点体系建设,知识图谱体系化,提供软件行业顾问布道,12年的软件行业背景,欢迎有志于软件行业的同仁们互相交流,群名称:标准化规范工作组草案,群&&&号:, 联系方式:
(16)(63)(47)(35)(90)(114)(120)(59)(15)(4)(20)(54)(64)(80)(40)(11)(5)(1)(9)(42)(19)(8)(12)(19)(29)(5)(8)(24)(46)(33)(26)(19)(43)(19)(30)(43)(22)(10)(31)(43)(33)(80)(56)(35)(11)(7)(31)(53)(21)(17)(4)(5)(2)(28)(82)(57)(71)(14)(8)(1)(5)(70)(11)(1)(5)(2)(1)(2)(1)为什么cad图纸从一个图复制到另一个图只有一部分被复制过去了_问答百科_我爱台球网
我爱台球网-www.52tq.net
为什么cad图纸从一个图复制到另一个图只有一部分被复制过去了
为什么cad图纸从一个图复制到另一个图只有一部分被复制过去了
来源:网络收集 & 发布时间: &
不是,其他的都可以,就是这一块只能复制过去一部分
是不是图层关了,或者是没?有选中那么多?
咖啡奶粒:CAD版本相同吗?在高版本CAD编辑,然后在低版本CAD上打开,某些功能不能完全显现吧?
VgzkVCCa:是不是篇幅太小
CAD图纸复制到另一个里面时图有,字没了。但在同一个图里面...cad从一个图复制到另一个图后有一部分看不到了,然后重新复制...CAD中把一个图纸中复制的东西粘贴在另一个图中只有一部分...CAD中把一个图纸中复制的东西粘贴在另一个图中只有一部分...AUTO-CAD 2012中把单个的CAD图纸复制到一个CAD布局中... 更多关于“为什么cad图纸从一个图复制到另一个图只有一部分被复制过去了”内容
CAD中把一个图纸中复制的东西粘贴在另一个图中只有一部分... ……你可以试试用块命令,先创建块(B) -----------输入名称(随便起一个名字)-------点选择对象------先择你要复制的图形(相当于复制命令)----确定 选择要复制的图形(点选后会发现它变成...……
cad一个图中的图形复制到另一个图中,就是看不到,怎么回事? ……看一下是不是图层被隐藏了、是不是初具锁住了,是不是天正设计的图又直接用cad打开的。……
我用复制将CAD的图复制到另一个CAD文件里,图形变得很大,请... ……这个很好做,你把复制来的整个图形全部选中,之后在选中的图形上右键,你点击缩放,命令栏有提示,要你指定基点,你可以任意单击一点,之后就是比例因子了,你可以随意输入零点...……
CAD中把一个图纸中复制的东西粘贴在另一个图中只有一部分... ……-------点选择对象------先择你要复制的图形(相当于复制命令)----确定????? 选择要复制的图形(点选后会发现它变成了一个整体)-----点复制-------粘贴(...……
将CAD中的一个文件复制到另一个CAD中粘贴的图或文字就变... ……你复制的是图块吧? 因为以前的图纸有个相同名字的块。改名图块就可以了……
怎样将CAD图形的一部分复制粘贴到另一个新CAD窗口中? ……先打开

我要回帖

更多关于 怎样将一张图的一部分 的文章

 

随机推荐