摘要:
根据结构张量能区分图像的平坦区域、边缘区域与角点区域。此算法也算是计算机科学最重要的32个算法之一了。链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturtensor这个单词好像是德语,翻译过来就是structure tensor结构张量了。此处所说的张量不是相对论或黎曼几何里的张量,黎曼几何的张量好多论文都叫张量场了。也不是数学界还没研究明白的对矩阵进行扩展的高阶张量,主要是张量分解。这里的结构张量就是一个矩阵,一个对图像像素进行组织的数据结构而已。像素组织而成的矩阵如下:这个公式太常见了,在harris角点检测中就用到了。其中Ix,Iy就是原对原图像 阅读全文
摘要:
类模板成员函数要不就在类模板中实现,要不就和类模板写在同一个文件中。否则然会出现下面错误:>main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall vec::pop_back(void)" (?pop_back@?$vec@H@@QAEHXZ),该符号在函数 _main 中被引用1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall vec::push_back(int)" (?push_back@?$vec@ 阅读全文
摘要:
很实用的技巧,加以记录。最初我是想使用connectify的,不过安装这个软件之后,发现有线账号登不上了,所以就选择使用Windows7自带的工具了。首先以管理员身份运行cmd。进入之后cd到c盘windows目录下的system32目录。然后输入:netsh wlan set hostednetwork mode=allow ssid=wifi key=12345678这里的ssid就是热点名称,12345678就是热点密码。输入netsh wlan start hostednetwork是打开连接。输入netsh wlan stop hostednetwork是关闭连接。当然,上面只是建立 阅读全文
摘要:
算法有很多变种。不过主要就是以下三步。1.设计隶属度函数将图像从空间域变换到模糊集域。2.设计模糊增强算子,在模糊集域对图像进行处理。3.根据第1步的隶属度函数重新将图像从模糊集域变换到空间域。这和频域处理中的变换反变换不是很像么。我使用的隶属度函数和模糊增强算子在这篇论文里,也算相关算法的经典论文了。处理结果如下:原图:模糊集增强后:matlab代码如下:clear all; close all; clc;img=double(imread('lena.jpg'));imshow(img,[])[m n]=size(img);Fe=1; %控制参数Fd=128;xmax=ma 阅读全文
摘要:
随机游走类似布朗运动,就是随机的向各个方向走吧。虽然代码没什么技术含量,不过产生的图像实在太漂亮了,所以还是贴上来吧。产生的图像:matlab代码如下:clear all;close all;clcn=70000; %游走的步数。也是图像中像素个数,有些位置可能重复,所以白像素小于等于nx=0; %初始x坐标y=0; %初始y坐标pix=zeros(n,2); %游走产生的像素坐标neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1]; %当前像素邻域for i=1:n r=floor... 阅读全文
摘要:
学习这个算法是为学习图像处理中的图割算法做准备的。基本概念:1.最大流是一个有向图。2.一个流是最大流,当且仅当它的残余网络中不包括增广路径。3.最小割就是网络中所有割中值最小的那个割,最小割是不唯一的,不过最小割的值是唯一的。4.最大流的流量等于某一最小割的容量。算法思想就是Ford-Fulkerson方法。具体流程:1.首先使用广度优先搜索找到源节点到汇节点的一条路径,为增广路径。2.如果找不到新的从源到汇的增广路径,则上一次求得的网络就是最大流,否则向下执行。3.找出增广路径中最小的路径的值。5.用路径中最小的值构造最大流网络,原网络包含这个网络。4.将增广路径中所有的路径减去最小路径这 阅读全文
摘要:
好不容易写一个不编程的随笔了。题目写出来,目的就已经很明确了,我就不详细解释原因了。其实一年前多就已经配置成功了,写这篇随笔主要是给自己做一个备份,如果顺便能帮助其他人,也算功德无量了。我就从最开始配置说起。环境是Windows 7下的,XP下应该也可以。首先需要下载Chrome并安装。下载地址在这里。然后需要在Chrome中安装ProxySwitchSharp插件。下载地址在这里。安装完之后右上就会出现一个灰色的小地球仪,至于旁边那个插件叫adblock,屏蔽广告用的。如下图:然后鼠标右击点选项进去,如下图:进去之后,点导入/导出选项卡,然后点从文件恢复。我已经配置好文件了,在这里下载。好了 阅读全文
摘要:
图的相关算法也算是自己的一个软肋了,当年没选修图论也是一大遗憾。图像处理中,也有使用图论算法作为基础的相关算法,比如图割,这个算法就需要求最大流、最小割。所以熟悉一下图论算法对于图像处理还是很有帮助的。Dijkstra和Bellman-Ford类似,都是解决单源最短路径问题,不同的是这个方法只能解决边为非负的问题,实现的好的Dijkstra算法运行时间要快于Bellman-ford。算法步骤如下:1.首先设置队列,所有节点入列,源节点值为0,其他节点值为无穷。2.然后在队列中找值最小的节点并出列。3.计算出列的节点所有后继节点的距离。4.松弛方法,如果新计算的距离小于上次计算的距离,那么更新距 阅读全文
摘要:
该算法可以用来解决一般(边的权值为负)的单源最短路径问题,而dijkstra只能解决权值非负的情况。此算法使用松弛技术,对每一个顶点,逐步减少源到该顶点的路径的估计值,直到达到最短的路径。算法运算结果:matlab代码如下,netplot函数在这里,不过当时函数中表示两节点没有路径用的是0,而现在需要改成inf:clear all;close all;clc%初始化邻接压缩表b=[1 2 6; 1 4 7 2 3 5; 2 4 8; 2 5 -4; 3 2 -2; 4 3 -3; 4 5 9; 5 1 2; 5 3 7];m=max(max(b(:,1:2... 阅读全文
摘要:
如此经典的算法竟一直没有单独的实现过,真是遗憾啊。广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过。这次单独的将两个算法实现出来,因为算法本身和图像没什么关系,所以更纯粹些。广度优先搜索是从某一节点开始,搜索与其线连接的所有节点,按照广度方向像外扩展,直到不重复遍历所有节点。深度优先搜索是从某一节点开始,沿着其搜索到的第一个节点不断深入下去,当无法再深入的时候,回溯节点,然后再在回溯中的某一节点开始沿另一个方向深度搜索,直到不重复的遍历所有节点。广度优先搜索用的是队列作为临时节点存放处;深度优先搜索可以递归实现(算法导论就是用递归 阅读全文