Create The Image Laplacian Matrix Effectively
6 次查看(过去 30 天)
显示 更早的评论
Hello,
I want to build the Spatial Laplacian of a given operation on an image.
The Matrix is given by:
The matrix Dx / Dy is the forward difference operator -> Hence its transpose is the backward difference operator.
The matrix Ax / Ay is diagonal matrix with weights which are function of the gradient of the image.
It is defined by:
Where Ix(i) is the horizontal gradient of the input image at the i-th pixel.
As said above Ax(i, j) = 0, i ~= j.
It is the same for Ay with the direction modification.
Assuming input Image G -> g = vec(G) = G(:).
I want to find and image U -> u = vec(U) = U(:) s.t.:
How can I solve it most efficiently in MATLAB?
How should I build the sparse Matrices?
Thank You.
2 个评论
Matt J
2014-6-4
It looks like deconvreg in the Image Processing Toolbox does the above (or something similar), but without linear algebraic methods, probably.
采纳的回答
Matt J
2014-6-3
[M,N]=size(inputImage);
g=inputImage(:);
Dx=diff(speye(N),1,1);
Dx=kron(Dx,speye(M));
Dy=diff(speye(M),1,1);
Dy=kron(speye(N),Dy);
sp=@(V) spdiags(V(:),0,numel(V),numel(V));
Ax=sp(Dx*g);
Ay=sp(Dy*g);
Lg=Dx.'*Ax*Dx + Dy.'*Ay*Dy;
u=(speye(size(Lg))+lambda*Lg)\g;
2 个评论
Matt J
2014-6-3
Hi Royi,
- Yes, probably.
- Ax=sp(exp(-(Dx*g)/2/alpha^2)). Or implement Dx*g using diff() as you mentioned.
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!