Make a weight matrix sparce

6 views (last 30 days)
Orr Streicher
Orr Streicher on 29 Jan 2021
Edited: Matt J on 30 Jan 2021
Hi,
I have an image in size of 256x256.
I would like to implement an algorithem that use graph theory on this image so i want to calculate the weights matrix: for 2 pixcels x,y i want to calculate D(x,y)= exp(-|x-y|/sigma)
By theory, the matrix D should be in size of (256^2)x(256^2), but i understaned that this is not practical.
I read a paper said that in order to make the weight matrix sparse, it is possible to truncate the matrix to the 50 nearest neighbors.
Does anyone know how can i do it in matlab?
Or maybe another way to make the weight matrix sparse?
thanks,
Or
  2 Comments
Matt J
Matt J on 29 Jan 2021
Edited: Matt J on 30 Jan 2021
Do you really need D, or do you simply need an algorithm that computes D*I(:) for a given image I? The latter is just a convolution operation, and can be done efficiently with FFTs.
Matt J
Matt J on 30 Jan 2021
Edited: Matt J on 30 Jan 2021
Also, do you absolutely have to define D as D(x,y)= exp(-|x-y|/sigma) ? If you instead use a Mahalanobis distance, D(x,y)= exp(-|x-y|^2/sigma^2), then D can be expressed as a Kronecker product
D=kron( exp(-(xi-yi)^2/sigma) , exp(-(xj-yj)^2/sigma) )
which has a number of simplifying properties.

Sign in to comment.

Answers (0)

Categories

Find more on Graph and Network Algorithms in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!