导航:首页 > 编程语言 > 线特征提取拉普拉斯算法代码

线特征提取拉普拉斯算法代码

发布时间:2023-05-12 18:30:50

❶ 妹子学C语言伤不起啊,求看这段拉普拉斯代码怎么运行

你直接用这个式子就可以了,输出的图像已经经过处理了
outimage[i][j]=-(inimage[i-1][j]+inimage[i][j+1]+inimage[i+1][j]+inimage[i][j-1])+5*inimage[i][j];
其实matlab里面有现成内的函数可用,数字图像处理容用它最方便了

❷ 求MATLAB代码

我只能说,这种限定行数的东西很疼。
再说句不好听的,多一些空行,代码一行拆成两行写,多一些注释,再牛一点把一些MATLAB自带的函数用循环再实现一次,这样的话,几百行的代码肯定可以干到1200行。

❸ 求 软抠图法抠图修复的matlab代码,要运用到拉普拉斯抠图矩阵

代码来自A closed form solution to Natural Image Matting
A. Levin D. Lischinski and Y. Weiss

求Matting Laplacian矩阵L代码:
function [A,A1]=getLaplacian1(I,consts,epsilon,win_size)

if (~exist('epsilon','var'))
epsilon=0.0000001;
end
if (isempty(epsilon))
epsilon=0.0000001;
end
if (~exist('win_size','var'))
win_size=1;
end
if (isempty(win_size))
win_size=1;
end

neb_size=(win_size*2+1)^2;
[h,w,c]=size(I);
n=h; m=w;
img_size=w*h;
consts=imerode(consts,ones(win_size*2+1));

indsM=reshape([1:img_size],h,w);

tlen=sum(sum(1-consts(win_size+1:end-win_size,win_size+1:end-win_size)))*(neb_size^2);

row_inds=zeros(tlen ,1);
col_inds=zeros(tlen,1);
vals=zeros(tlen,1);
len=0;
for j=1+win_size:w-win_size
for i=win_size+1:h-win_size
if (consts(i,j))
continue
end
win_inds=indsM(i-win_size:i+win_size,j-win_size:j+win_size);
win_inds=win_inds(:);
winI=I(i-win_size:i+win_size,j-win_size:j+win_size,:);
winI=reshape(winI,neb_size,c);
win_mu=mean(winI,1)';
win_var=inv(winI'*winI/neb_size-win_mu*win_mu' +epsilon/neb_size*eye(c));

winI=winI-repmat(win_mu',neb_size,1);
tvals=(1+winI*win_var*winI')/neb_size;

row_inds(1+len:neb_size^2+len)=reshape(repmat(win_inds,1,neb_size),...
neb_size^2,1);
col_inds(1+len:neb_size^2+len)=reshape(repmat(win_inds',neb_size,1),...
neb_size^2,1);
vals(1+len:neb_size^2+len)=tvals(:);
len=len+neb_size^2;
end
end

vals=vals(1:len);
row_inds=row_inds(1:len);
col_inds=col_inds(1:len);
A=sparse(row_inds,col_inds,vals,img_size,img_size);

sumA=sum(A,2);
A=spdiags(sumA(:),0,img_size,img_size)-A;

return

❹ 怎么在MATLAB中用有限元法求拉普拉斯算子的特征值!!

首先构造出矩阵,然后用eig函数就可以求特征值和特征矢量。

❺ OpenCV-Python之——图像SIFT特征提取

在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而计算机要有相同的能力却不是那么的容易,在未知的场景中,计算机视觉并不能提供物体的尺度大小,其中的一种方法是把物体不同尺度下的图像都提供给机器,让机器能够对物体在不同的尺度下有一个统一的认知。在建立统一认知的过程中,要考虑的就是在图像在不同的尺度下都旅弯唤存在的特征点。

在早期图像的多尺度通常使用图像金字塔表示形式。图像金字塔是同一图像在不同的分辨率下得到的一组结果其生成过程一般包括两个步骤:

多分辨率的图像金字塔虽然生成简单,但其本质是降采样,图像的局部特征则难以保持,也就是无法保持特征的尺度不变性。

我们还可以通过图像的模糊程度来模拟人在距离物体由远到近时物体在视拆凯网膜上成像过程,距离物体越近其尺寸越大图像也越模糊,这就是高斯尺度空间,使用不同的参数模糊图像(分辨率不变),是尺度空间的另一种表现形式。

构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,而检测特征点较好的算子是Δ^2G(高斯拉普拉斯,LoG)
使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG。

从上式可以知道,将相邻的两个高斯空间的图像相减就得到了DoG的响应图像。为了得到DoG图像,先要构建高斯尺度空间,而高斯的尺度空间可以在图像金字塔降采样的基础上加上高斯滤波得到,也就是对图像金字塔的每层图像使用不同的参数σ进行高斯模糊,使每层金字塔有多张高斯模糊过的图像。
如下图,octave间是降采样关系,且octave(i+1)的第一张(从下往上数)图像是由octave(i)中德倒数第三张图像降采样得到。octave内的图像大小一样,只是高斯模糊使用的尺度参数不同。

对于一幅图像,建立其在不同尺度scale下的图像,也称为octave,这是为了scale-invariant,也就是在任何尺度都能有对应的特征点。下图中右侧的DoG就是我们构建的尺度空间。

为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。下图中将叉号点要比较的26个点都标为了绿色。

找到所有特征点后, 要去除低对比闹粗度和不稳定的边缘效应的点 ,留下具有代表性的关键点(比如,正方形旋转后变为菱形,如果用边缘做识别,4条边就完全不一样,就会错误;如果用角点识别,则稳定一些)。去除这些点的好处是增强匹配的抗噪能力和稳定性。最后,对离散的点做曲线拟合,得到精确的关键点的位置和尺度信息。

近来不断有人改进,其中最著名的有 SURF(计算量小,运算速度快,提取的特征点几乎与SIFT相同)和 CSIFT(彩色尺度特征不变变换,顾名思义,可以解决基于彩色图像的SIFT问题)。

其中sift.detectAndCompute()函数返回kp,des。

上图dog的shape为(481, 500, 3),提取的特征向量des的shape为(501, 128),501个128维的特征点。

该方法可以在特征点处绘制一个小圆圈。

https://blog.csdn.net/happyer88/article/details/45817305
https://www.jianshu.com/p/d94e558ebe26
https://www.cnblogs.com/wangguchangqing/p/4853263.html

❻ 在matlab软件中用拉普拉斯算子和canny算子进行边缘检测的程序

i=imread('1.jpg'); 读入图像1
i1=rgb2gray(i); 把rgb图像转换成灰度图像
bw1=edge(i1,'log',0.07); 做阈值为0.07的高斯—拉普拉斯(Log)算法
figure(3),imshow(i); 显示原图
figure(4),imshow(bw1); 显示高斯—拉普拉斯(Log)边缘检测后的图

❼ 哪位大神知道laplace变换和逆laplace变换的C++/C的算法么,小弟急求啊....希望大神不吝赐教啊...

拉普拉斯c语言程序
double uniform(double a,double b,signed int seed)
{
double t;
seed=2045*seed+1;
seed=seed-(seed/1048576)*1048576;
t=(seed)/1048576.0;
t=a+(b-a)*t;

return(t);
}

/*******************************************************************
* 拉普拉斯随机分布
* beta--拉普拉斯分布的参数
* seed--随机数种子
*******************************************************************/
double laplace(double beta,signed int seed)
{
double u1,u2,x;

u1=uniform(0.,1.,seed);
u2=uniform(0.,1.,seed);
if(u1<=0.5)
x=-beta*log(1.-u2);
else
x=beta*log(u2);

return(x);
}

❽ matlab 拉普拉斯变换

原因是,像来函数的分子阶次高自于分母阶次,拉氏逆变换的结果中会出现Dirac函数 dirac(t) 及其一阶导函数(为一个冲击偶,在早期Maple内核中的表示为dirac(1,t),后来MuPad中的表示为dirac(t,1)),而比较蛋疼的是,MATLAB并未定义Dirac函数的导函数,所以绘图会出错。

由于Dirac函数及其导函数在除t=0之外的部分都为0,而在t=0处的值为无穷大(或负无穷),在绘图也不好体现。所以,可以考虑避免t取0(即把t=0的点剔除),以规避绘图出错。

参考代码:

T=-100:0.5:100;
T(T==0)=[];
plot(T,subs(ft,T))

不过,由于t<0时的函数为指数函数,取值范围很大,绘图效果不好。如果画t=0~10之间的图像,可以用

T=linspace(eps,10,100);
plot(T,subs(ft,T))
阅读全文

与线特征提取拉普拉斯算法代码相关的资料

热点内容
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265
文件有哪些要求 浏览:484
cad打开时会出现两个文件 浏览:65
什么是转基因网站 浏览:48
手柄设备有问题代码43 浏览:921
怎么他么怎么又网络了 浏览:649
java会出现内存泄露么 浏览:617
苹果4s锁屏后怎么还显示歌曲 浏览:207
鸿蒙系统文件管理哪些可以删除 浏览:550
ubuntuqt创建工程没有配置文件 浏览:126
网站登录变成其他网站怎么处理 浏览:202
ug数控编程学校有哪些 浏览:203
java图片上传显示 浏览:402
ppt的文件名后缀 浏览:902

友情链接