小波纹理特征提取 MATLAB 程序

📅 2026/7/8 6:15:57
小波纹理特征提取 MATLAB 程序
小波纹理特征提取 MATLAB 程序。这套方法源自 Chang Kuo (1993) 的“Texture Analysis with Tree-structured Wavelet Transform”是 Brodatz 纹理分类、遥感影像、医学图像 中最常用的小波特征方案之一。一、小波纹理特征的核心思想对图像做多尺度小波分解DWT在每个子带LH, HL, HH上提取统计量将这些统计量拼接成特征向量为什么用小波做纹理空间局部性比 Fourier 好多分辨率捕捉粗细纹理方向选择性水平 / 垂直 / 对角二、小波分解结构3 层为例LL3 LH3 HL3 HH3LL低频近似LH水平边缘垂直纹理HL垂直边缘水平纹理HH对角边缘点状/角状纹理纹理信息主要集中在 LH / HL / HH 子带三、纹理特征定义最常用 8 维对每个子带LH, HL, HH计算特征含义均值Mean能量水平标准差Std对比度能量Energy均匀性熵Entropy复杂性共3 子带 × 4 特征 12 维论文常用 8~24 维四、MATLAB 实现自包含主程序wavelet_texture_feature.m%% wavelet_texture_feature.m% 基于小波变换的纹理特征提取% 输入: 灰度图像 I% 输出: featureVec (N×1)functionfeatureVecwavelet_texture_feature(I,waveletName,level)ifnargin2,waveletNamedb4;endifnargin3,level3;end% 转为灰度ifsize(I,3)3Irgb2gray(I);endIim2double(I);% 1. 小波分解 [C,S]wavedec2(I,level,waveletName);featureVec[];% 2. 逐层提取细节子带特征 forl1:level% 提取 LH, HL, HH[H,V,D]detcoef2(all,C,S,l);% 对每个子带计算特征featureVec[featureVec;...subband_features(H);...subband_features(V);...subband_features(D)];endend%% --------------------------------------------------%% 子带特征计算函数functionfeatsubband_features(subband)% 防止空矩阵ifisempty(subband)featzeros(4,1);return;end% 1. 均值mumean(subband(:));% 2. 标准差sigmastd(subband(:));% 3. 能量energysum(subband(:).^2);% 4. 熵pabs(subband(:));pp/(sum(p)eps);% 归一化entropy-sum(p.*log2(peps));feat[mu;sigma;energy;entropy];end五、使用示例纹理分类 / Brodatz%% demo_wavelet_texture.mclear;clc;close all;% 读取纹理图像Brodatz / 自建I1imread(texture1.png);% 如 D16 (wood)I2imread(texture2.png);% 如 D17 (water)% 提取特征f1wavelet_texture_feature(I1,db4,3);f2wavelet_texture_feature(I2,db4,3);fprintf(特征维度: %d\n,length(f1));% 可视化特征figure(Color,white)subplot(1,2,1)bar(f1);title(Texture 1 Features);xlabel(Feature Index);grid onsubplot(1,2,2)bar(f2);title(Texture 2 Features);xlabel(Feature Index);grid on%% 相似度比较欧氏距离distnorm(f1-f2);fprintf(纹理特征欧氏距离: %.4f\n,dist);六、特征可视化小波子带%% visualize_wavelet_decomp.mIimread(texture1.png);ifsize(I,3)3,Irgb2gray(I);endIim2double(I);[C,S]wavedec2(I,3,db4);% 重构各子带A3wrcoef2(a,C,S,db4,3);H3wrcoef2(h,C,S,db4,3);V3wrcoef2(v,C,S,db4,3);D3wrcoef2(d,C,S,db4,3);figure(Color,white,Position,[100100800600])subplot(2,2,1),imshow(A3),title(LL3 (Approximation))subplot(2,2,2),imshow(H3),title(LH3 (Horizontal))subplot(2,2,3),imshow(V3),title(HL3 (Vertical))subplot(2,2,4),imshow(D3),title(HH3 (Diagonal))参考代码 基于小波的纹理特征提取代码www.youwenfan.com/contentcsw/82760.html七、特征增强方案1. 多尺度能量比MSEEratioELH(l)ELL(l)E_{ratio} \frac{E_{LH}^{(l)}}{E_{LL}^{(l)}}Eratio​ELL(l)​ELH(l)​​2. 小波包特征更精细wpwpdec(I,3,db4);Ewenergy(wp);3. 旋转不变特征对 LH/HL/HH 取能量 熵的平均或做复数小波DT-CWT八、与 GLCM / LBP 的对比方法优点缺点GLCM统计意义明确计算慢、对尺度敏感LBP旋转不变、快对噪声敏感小波纹理多尺度、方向性强需选小波基工程经验医学影像 →小波 GLCM工业缺陷 →小波 LBP遥感分类 →小波包 SVM九、SVM / KNN 分类接口%% 训练分类器features[f1;f2];labels[1;2];modelfitcecoc(features,labels);% SVM% 预测新样本f_testwavelet_texture_feature(testImg,db4,3);predpredict(model,f_test);