Create The Image Laplacian Matrix Effectively
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Royi Avital
am 3 Jun. 2014
Kommentiert: Royi Avital
am 8 Jun. 2014
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 Kommentare
Matt J
am 4 Jun. 2014
It looks like deconvreg in the Image Processing Toolbox does the above (or something similar), but without linear algebraic methods, probably.
Akzeptierte Antwort
Matt J
am 3 Jun. 2014
[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 Kommentare
Matt J
am 3 Jun. 2014
Hi Royi,
- Yes, probably.
- Ax=sp(exp(-(Dx*g)/2/alpha^2)). Or implement Dx*g using diff() as you mentioned.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!