国旗相似度研究—基于canny算子
来源:互联网 发布:中科软java面试题 编辑:程序博客网 时间:2024/06/06 03:56
基于canny算子的国旗相似度研究
(一)这篇文章格格带大家来研究一下国旗的相似度问题
当今世纪设计界,最大的难题可能就是设计国旗了吧,而国旗界也是抄袭的重灾区。那么我们来看一看到底这些国旗怎么了。
1.大五角星类
这一类国旗可能是收到某些神秘的东方力量感召。索马里的像是越南国旗没上色。相比起来,摩洛哥还算是走心的,至少人家还是个空心的。
摩洛哥
索马里
越南
2.星月类
其实星月类的国旗很多,但是这两个是最像的。可能这是伊斯兰的标志吧,格格也不太懂。
毛里塔尼亚
土耳其
3.星条类
格格是第一次听说利比果亚这个国家。就是这样一个连百度百科都没有的非洲内陆国家,没错,你山寨了美国的国旗。还是说利比果亚也有一个加入美国的梦啊。这个国旗无论怎么解读,都会给人一种美国属地的既视感啊。
美国
利比果亚
4.楔子类
这一类国旗是格格最讨厌的。可能是这个三角形太尖锐了。毕竟像格格这么萌萌哒的圆润的人,怎么可能喜欢这样的设计呢。但是偏偏有很多国家都喜欢这种设计,格格就是真的想不明白了。
巴哈马
苏丹
古巴
古巴挤破了脑袋想出来的星星设计,就这样被圣多美和普林西比给挪下去了。
圣多美和普林西比
5.十字类
十字类同样是一个大类,请问你们设计国旗的时候,红十字会有没有告你们侵权啊。
瑞典
芬兰
丹麦
瑞士
冰岛
关于冰岛和挪威的国旗,我是服气的。你们就是交换了个颜色,这样真的好吗?
挪威
6.欺负色盲类
看了那么多,都是小case,真正的大佬才刚刚到达战场。不是有个笑话说:“一个人想把俄罗斯大使馆的国旗烧掉,结果荷兰大使馆遭殃了”。我宁愿相信这是真的。这是最让人一脸懵逼分不出个一二三四的设计了好吗?但那个法国,你是来干什么的!好像荷兰国旗站起来了。你他妈是来搞笑的吗?
俄罗斯
荷兰
法国
德国
挪威
(二)朕的大清
当然上面那些都不是咱们这篇文章研究的内容。真正的主角才刚刚登场。
黄龙旗(中国清朝)
不丹
可能很多人都觉得不丹国旗上的龙是剽窃咱们中国的图腾。但是大多数人不知道的是,大清还在的时候,我们也是有过国旗的–黄龙旗(虽然是因为与国外交往被迫的)。不丹国旗和大清的黄龙旗那简直是如出一辙啊。哎,奈何朕的大清就这样亡了,连国旗都被人给偷走了。但是不丹国旗和黄龙旗到底有多像呢?这篇文章,格格就带大家一起来研究一下这两个国旗的相似度。
(三)基于canny算子的图像分割
图像分割有很多很多算法,最基本的就有梯度算子边缘检测(roberts算子,sobel算子,Prewitt算子)、log算子边缘检测,canny算子边缘检测、Kirsch算子边缘检测、Nevitia算子边缘检测等等。那么边缘检测算子到底是什么呢?边缘检测 从Roberts到Canny算子 。大家可以通过这篇文章学习一下。其实简单来说,边缘检测算子就是一种用来寻找边缘的数学方法。如果大家没有兴趣的话,记住这句话就可以了。
由于各个算子的数学原理不同,那么各个算子在不同的模型或者函数下,运行效果是不同的。并且可能有优劣之分。我们需要通过判断或者测试来选择我们最理想的算子进行计算。而且各个算子在具体应用时还有细节上的不同,所以大家可以通过上面的连接来进行了解。
下面我们通过测试检验一下各个算子的效果
MATLAB代码如下:
I=imread('黄龙旗.png');figureimshow(I);title('原始图像');I1=im2bw(I);figureimshow(I1);title('二值图像');I2=edge(I1,'roberts');figure;imshow(I2);title('roberts算子分割结果');I3=edge(I1,'sobel');figure;imshow(I3);title('sobel算子分割结果');I4=edge(I1,'Prewitt');figure;imshow(I4);title('Prewitt算子分割结果');I5=edge(I1,'canny');figure;imshow(I5);title('canny算子分割结果');
那下面我们来看一下效果
其实很明显,大家能够看到,canny算子对于弱边缘的处理明显优于其他三种算子。如果大家感觉看的不够仔细的话,可以通过
axis();
大家一定能够明显的感受到不同算子之间的差异性。
(四)David Lowe 的sift算法—-特征匹配
圈内有个大佬,名叫David Lowe。大佬发表过三篇论文,讲的就是他设计的sift算法(大家可以点击下载)。这个算法很厉害,至于怎么厉害,大家可以点击这里。其实,sift算法就是用来检测图像特征的。而且sift算法检测到的特征是不变特征,图像的尺度、角度变换,不会对其产生影响。是不是很厉害的样子。那我们今天就应用其中的一个小小功能。来检测一下不丹的国旗和我大清的黄龙旗到底有多少匹配特征。为了是不想管因素避免影响我们的结果,所以我们首先用上面的canny算子对两个原始图像进行了边缘分割。在此基础上进行sift匹配。
声明:本程序基于MATLAB实现。请自行下载sift算法。将sift的demo放到MATLAB运行的文件夹里。并在文件夹里建立如下脚本。
i1=imread('黄龙旗.png'); i2=imread('不丹国旗.png'); i11=im2bw(i1);I1=~edge(i11,'canny');i22=im2bw(i2);I2_0=~edge(i22,'canny');I2=I2_0(:,end:-1:1);%将图像左右翻转figure;imshow(I1);figure;imshow(I2);imwrite(I1,'v1.jpg','quality',80); imwrite(I2,'v2.jpg','quality',80); match('v1.jpg','v2.jpg');
接下来就是见证奇迹的时刻。我们来看一下两个图像的canny算子边缘检测结果还有检测结果的sift特征匹配。
其实结果就还好,只是龙背上的麒比较像啦,别的地方基本上没有能够匹配的特征。所以我现在代表不丹说一声:我们没有抄袭大清的黄龙旗!而且,数据实话,我们大清是天朝上国,龙有时我们最尊贵的图腾,黄龙旗上面的龙那比那个不丹的龙不知道威武到哪里去了呢。但不说我们的龙轮廓清晰,就是气质,我们也是昂首向上的。表现了我们泱泱大国蔑视一切的威严。而你看不丹的那个,啊…… 算了,说自己好就行了,不说别人的坏话,其实也还将就吧。
(五)完整程序及图片
点击下载
本程序基于MATLAB实现。由于版本,库不同等不可抗力造成的程序运行不畅,请自行调节,谢谢大家。
同时格格的QQ446019725欢迎大家随时来骚扰
- 国旗相似度研究—基于canny算子
- 基于MATLAB的canny算子
- 基于MATLAB的opencv中的canny算子
- opencv——Canny算子
- Canny算子
- canny算子
- canny算子
- canny算子
- canny算子
- Canny算子
- Canny算子
- Canny算子
- Canny算子
- canny算子—快速边缘检测
- 基于OPENCV的CANNY边缘检测算子详细代码实现
- 基于大数据的推荐算法研究(2)——改进相似度
- 基于隐马尔科夫模型文本相似度问题研究
- 边缘检测综合示例——Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- 深度神经网络Tensorflow里卷积后feature map的大小
- jquery 实现动画简单操作
- SplashActivity的实现
- 使用Eclipse编译运行MapReduce程序_Hadoop2.6.0_Ubuntu/CentOS
- 动态代理AOP(面向切面编程)
- 国旗相似度研究—基于canny算子
- 前端遇到问题解决方案
- 深入贯彻闭包思想,全面理解JS闭包形成过程
- 等级保护三级一篇写的比较好的应用系统安全测评方法
- 面试题38. 数字在排序数组中出现的次数
- 编程题-绕圈排队
- jar文件和.so文件的区别
- oracle中Number(m,n)
- Express URL跳转(重定向)的实现