关于2D-DCT字典和克罗内克积以及二维字典的separable特性的个人理解
最近看了关于图像字典训练的部分,但是照着书中的讲解,却得不到书中的图像。
书中的2D-DCT字典是利用8*11的冗余1D-DCT字典的克罗内克积张成的,但是直接使用matlab的kron函数张成的图像是如下图所示:
而书中展示出来的字典是下图的形式:
那到底克罗内克积产生的字典应该是什么样的呢?其实,应该是第一张图片所示的字典,那书中到底是怎么回事呢?
实验后发现,原来书中为了能看明白每一列是什么内容,将由克罗内克积产生的64*121的字典reshape,每一列reshape为8*8的图像块,最终组合成展示字典。该展示字典的第i,j个块可以由下式生成:
DCTMTX(:,i)*DCTMTX(j,:)
也即是DCT冗余字典的第i列和第j行的张成矩阵。该字典的列向量是l2归一化的。
下面是直接生成展示字典的代码:
其生成的字典图像为:
该图像基本与书中类似。
另外,关于什么是separable的理解,个人认为,这个概念是相对于非结构化字典而言的。对于结构化的字典,进行二维计算时,不必显式存储,例如8*11的冗余字典DCTMTX,不必存储为64*121的克罗内克积张成字典,而仅需要通过对8*8的image patch左乘DCTMTX',右乘DCTMTX即可得到系数矩阵。而非结构化字典,比如K-SVD生成的字典,由于不存在克罗内克积等张成关系,因此必须显式存储,且只能通过将图像块变成一列,然后右乘字典转置。同时,将2D-DCT分离,使用左乘、右乘的方法,是存在快速算法的,而非结构化字典,只能硬乘,因此没有快速算法。当然为了解决这个问题,也会向非结构化字典内注入结构化因素,从而提高运算速度。
关于2D-DCT字典和克罗内克积以及二维字典的separable特性的个人理解相关推荐
- python之请求报文对比(假定最多二维字典)
两段请求报文,判断不一样的key和value,只判断d2里和d1不同的值,和全部不同的key ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小 ...
- Python 中的“二维”字典 (two-dimension dictionary)
Python 中的dict可以实现迅速查找.那么有没有像数组有二维数组一样,有二维的字典呢?比如我需要对两个关键词进行查找的时候.2D dict 可以通过 dict_2d = {'a': {'a': ...
- Python 二维字典定义
初始化二维字典 二维字典形如, 值为字典: C={"a": {"b": {2}}, "b": {"c": {1}}} f ...
- python二维字典简单赋值取值
python二维字典简单赋值取值 一维字典 二维字典 访问二维字典 字典和列表的区别 小白一个,记录python二维字典的学习 一维字典 字典是用花括号来定义的,比如 dict = {'姓名':'汪汪 ...
- 坐标系转换--二维四参数大地坐标系转换模型变换关系理解
二维四参数空间直角坐标系转换模型变换关系理解 [ X 2 Y 2 ] = [ T x T y ] + ( 1 + m ) [ cos α − sin α sin α cos α ] [ ...
- Python二维字典的几个小例子
# encoding:utf-8 # 在二维dict中,最外层的key不能相同,但是不同外层的key的里层的key是可以相同的 d={'a':{'b':1},'c':{'b':2}} print(d[ ...
- 二维dct变换例题_matlab进行二维DCT变换和二维DCT反变换
题目: matlab进行二维DCT变换和二维DCT反变换 在Matlab中,函数dct2 和函数idct2分别用于进行二维DCT变换和二维DCT反变换.下面以处理本次训练图像为例说明该余弦正反变换在M ...
- 二维数组数和指针操作的理解
#include<string.h> #include <stdio.h> int main(void) {int a[4][2] = { { 2,4 },{ 6,8 },{ ...
- c++ 二维数组_C|数形结合理解数组指针、指针数组、一级指针来遍历二维数组
二维数组本质是也是线性存储的一维数组,各元素都是相对于基地址(首地址)的偏移,只是逻辑上的维度区分而已.或者可以理解为数组的数组,也就是说,n维数组的元素是一个n-1维数组. 需要注意的是,多维数组名 ...
最新文章
- Charles 从入门到精通
- 计算机应用基础教学实践活动,计算机应用基础与中职数学课程融合教学实践.doc...
- AES算法相关数学知识 - 素域学习
- XStream生成的XML中带class属性,去掉class属性
- 阿里巴巴开源通用机器学习算法平台Alink
- python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)
- (四)比特币时间序列数据的AI预测
- 二维数组中最大连通子数组
- javascript 计算后结果失精度的问题解决
- ActiveMQ学习-Network connectors JAVA代码实现
- synchornized实现原理
- 最新手机号正则表达式验证方法(scala版)
- win7访问linux共享没有权限设置,局域网共享时提示:你没有权限访问,请与网络管理员联系...
- Windows Style Builder一些路径分享-2022.8.21(不定期更新)
- simple craft system
- 小程序页面传值的方式
- 引用参考文献标准格式
- 单机模式运行hadoop,来自《Hadoop权威指南》
- 北方民族大学计算机科学与导论试题,2016秋计算机导论(北方民族大学 张春梅)...
- WhatsApp Business API解读
热门文章
- thingsboard 编译及分析
- 学计算机要数学和英语怎么说,高中数学和英语有点恼火。但本人大学想学计算机,就是不知道英语和数学与计算机专业有什么必要联络吗?...
- 「π」里藏着所有人的银行卡密码和生日?
- 一文搞懂 Cocos Creator 3.x 坐标转换!建议收藏
- R语言数据分析笔记——t检验(含正态性检验和方差齐性检验在SPSS和R语言中的操作t检验(单样本、双独立样本、配对样本)在Excel、SPSS、R语言中的操作)
- IntelliJ idea中集成多个git项目模块
- 洲际酒店优悦会精英会籍延长12个月;美素佳儿合作京东超市力保宝宝口粮 | 美通企业日报...
- 2018第七届CodeVita国际编程大赛
- A new deep transfer learning network based on convolutional auto-encoder for mechanical fault diagno
- 香港深水埗将办新春美食节 助青年一尝创业滋味