图像稀疏度的计算

图像(矩阵)稀疏度的计算

文献[1]中提出了,可以利用L1范数和L2范数之间的差异度来衡量矩阵的稀疏度,公式如下:
sparseness(x)=\dfrac{\sqrt{n}-(\sum{|x_i|})/\sqrt{\sum{x_i^2}}}{\sqrt{n}-1}
其中x可以理解为信号;n表示x包含的元素的个数。sparseness(x)是[0,1]之间的数,值越大,说明x的稀疏度越大。那稀疏度怎么理解好呢?其实我们可以理解为一个向量中不为零的数的个数。不为零的个数越多则稀疏度越大,推广到矩阵也一样的道理。从公式中可以看出,当图像块越平滑稀疏度越小,图像重构效果越好,当图像块纹理越多时稀疏度越大,图像重构效果越差。

L1范数和L2范数:

L1范数:所有元素的绝对值之和。
L2范数:所有元素的平方之和的平方根。

计算x的稀疏度,可以分三步:

  • 计算x中所包含的元素个数n。
  • 计算x的L1范数。
  • 计算x的L2范数。

基于Matlab的稀疏度计算

function sparseness = sparseness(X)
% X可以是向量或是矩阵
[m,n] = size(X);
num = m*n;

% 分别计算L1和L2范数
s1 = 0;
s2 = 0;
for i=1:m
    for j=1:n
        s1 = s1+X(i,j);
        s2 = s2+X(i,j)^2;
    end
end

% 计算稀疏度
s2 = sqrt(s2);
c = s1/s2;
a = sqrt(num)-c;
b = sqrt(num)-1;
sparseness = a/b;

  1. Non-negative Matrix Factorization with Sparseness Constraints

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容