如何实现snake算法的matlab编程,来提取图像中划痕缺陷的边缘,谁有程序不妨发上来
N = length(x);
alpha = alpha* ones(1,N);
beta = beta*ones(1,N);
% produce the five diagnal vectors
alpham1 = [alpha(2:N) alpha(1)];
alphap1 = [alpha(N) alpha(1:N-1)];
betam1 = [beta(2:N) beta(1)];
betap1 = [beta(N) beta(1:N-1)];
a = betam1;
b = -alpha - 2*beta - 2*betam1;
c = alpha + alphap1 +betam1 + 4*beta + betap1;
d = -alphap1 - 2*beta - 2*betap1;
e = betap1;
% generate the parameters matrix
A = diag(a(1:N-2),-2) + diag(a(N-1:N),N-2);
A = A + diag(b(1:N-1),-1) + diag(b(N), N-1);
A = A + diag(c);
A = A + diag(d(1:N-1),1) + diag(d(N),-(N-1));
A = A + diag(e(1:N-2),2) + diag(e(N-1:N),-(N-2));
invAI = inv(A + gamma * diag(ones(1,N)));
for count = 1:ITER,
vfx = interp2(fx,x,y,’*linear’);
vfy = interp2(fy,x,y,’*linear’);
% deform snake
x = invAI * (gamma* x + kappa*vfx);
y = invAI * (gamma* y + kappa*vfy);
end
对称密钥密码算法有哪些
哈哈,我过几天就要考网络安全与管理
书上写着呢,我就打出来给你看看。
俩种。
1:序列算法或叫序列密码
它只对明文中的单个比特(或字节)进行加密和解密运算
2:分组算法或分组密码
它先对明文进行分组
每一分组包含多个布特或字节
然后逐组进行加解密。
KMP算法求next数组的问题
字符串如果是以0为下标的话next是0,只有最后一位与第一位相等。
在第i个字符前面的i-1个字符里面,
从开头开始的1个字符与最后1个字符是否相等,若不是,则next[i]=0;
从开头开始的2个字符与最后2个字符是否相等,若不是,则next[i]=1;
从开头开始的3个字符与最后3个字符是否相等,若不是,则next[i]=2;
前缀next数组的求解算法:
void SetPrefix(const char *Pattern, int prefix)
{
int len=CharLen(Pattern);//模式字符串长度。
prefix=0;
for(int i=1; i《len; i++)
{
int k=prefix[i-1];
//不断递归判断是否存在子对称,k=0说明不再有子对称,Pattern[i] != Pattern[k]说明虽然对称,但是对称后面的值和当前的字符值不相等,所以继续递推。
扩展资料:
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是遍历a的每一个位置,然后从该位置开始和b进行匹配,但是这种方法的复杂度是O(nm)。kmp算法通过一个O(m)的预处理,使匹配的复杂度降为O(n+m)。-snake算法
参考资料来源:百度百科-简约KMP算法