</pre><pre name="code" class="cpp"><p><span style="font-family:KaiTi_GB2312;font-size:14px;">看完小波变换的理论后想实现一线,同时发现opencv中并没有小波变换的函数(还是新版的有了,我不知道啊,please give Me a feedback if U guy know)</span></p><p>...............省略线。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</p><p> int N = 16;</p> //该部分首先将图划分为16*16的block区域
//在每一个循环当中,在每一次循环的所有的操作中,都表示在一个block的操作
//其中包括一次小波变换得到四个区域
//一次空间Spatial Energy计算,将每个Block的能量块保存到EnergyBlock([8,8]大小)中
//并且将这些能量块的数值保存为vector作为SVM的训练样本
for (int x=0;x<inputImage.rows;x+=N)
{
Mat ROIBlock = inputImage(Range(x,x+N),Range(x,x+N));
//小波变换:
//waveletblockLH为LH列变换后的结果
//waveletblock为waveletblock的LH行变换的结果
Mat WaveletBlockLH=Mat::zeros(16, 16, ROIBlock.type());
Mat WaveletBlock=Mat::zeros(16, 16, ROIBlock.type());
Mat EnergyBlock = Mat::zeros(8,8,ROIBlock.type());
//计算
for (int i=0,j=0;j<ROIBlock.cols;i+=2,j++)
{
//判断是否为前八列,如果成立则
// j=.i+.(i+1)
小波变换的C++实现
最新推荐文章于 2025-06-11 12:42:17 发布