【图像分类】基于主成分分析和核支持向量机的脑磁共振图像分类器(Matlab代码实现)

简介: 【图像分类】基于主成分分析和核支持向量机的脑磁共振图像分类器(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

脑磁共振图像的自动准确分类对医学分析和解释非常重要。在过去的十年中,已经提出了许多方法。

在本文中,我们提出了一种新的方法来区分给定的核磁共振图像是正常的还是异常的。该方法首先利用小波变换对图像进行特征提取,然后利用主成分分析(PCA)对特征进行降维处理。将约简特征提交给核支持向量机(KSVM)。采用Kfold分层交叉验证策略增强KSVM的泛化能力。我们选择了7种常见的脑部疾病(神经胶质瘤、脑膜瘤、阿尔茨海默病、阿尔茨海默病合并视觉失知性、匹克病、肉瘤和亨廷顿病)作为异常大脑,并从哈佛医学院网站上收集了160张MR脑图像(20张正常,140张异常)。我们用4种不同的核进行了实验,发现GRB核的分类准确率最高,达到99.38%。LIN、HPOL和IPOL内核分别达到95%、96.88%和98.12%。并将本文方法与近十年来的文献进行了比较,结果表明,基于GRB核的DWT+PCA+KSVM仍能获得最准确的分类结果。在具有3 GHz处理器和2 GB RAM的P4 IBM笔记本电脑上,256 × 256大小的图像的平均处理时间为0.0448 s。实验数据表明,该方法快速有效。它可以应用于磁共振脑图像分类领域,可以帮助医生诊断患者在一定程度上是正常还是异常。

原文摘要:

Abstract—Automated and accurate classification of MR brain images is extremely important for medical analysis and interpretation. Over the last decade numerous methods have already been proposed. In this paper, we presented a novel method to classify a given MR brain image as normal or abnormal. The proposed method first employed wavelet transform to extract features from images, followed by applying principle component analysis (PCA) to reduce the dimensions of features. The reduced features were submitted to a kernel support vector machine (KSVM). The strategy of K-fold stratified cross validation was used to enhance generalization of KSVM. We chose seven common brain diseases (glioma, meningioma, Alzheimer’s disease, Alzheimer’s disease plus visual agnosia, Pick’s disease, sarcoma, and Huntington’s disease) as abnormal brains, and collected 160 MR brain images (20 normal and 140 abnormal) from Harvard Medical School website. We performed our proposed methods with four different kernels, and found that the GRB kernel achieves the highest classification accuracy as 99.38%. The LIN, HPOL, and IPOL kernel achieves 95%, 96.88%, and 98.12%, respectively. We also compared our method to those from literatures in the last decade, and the results showed our DWT+PCA+KSVM with GRB kernel

still achieved the best accurate classification results. The averaged processing time for a 256 × 256 size image on a laptop of P4 IBM with 3 GHz processor and 2 GB RAM is 0.0448 s. From the experimental data, our method was effective and rapid. It could be applied to the field of MR brain image classification and can assist the doctors to diagnose where a patient is normal or abnormal to certain degrees.

本文提出了一种基于主成分分析(PCA)和核支持向量机(KSVM)的脑磁共振图像分类器。该方法首先利用PCA对高维脑磁共振图像特征进行降维,去除冗余和噪声信息,提取主要判别性特征;然后利用KSVM的非线性分类能力对降维后的特征进行分类。实验结果表明,该方法能够有效提高脑磁共振图像的分类性能,具有较高的准确率和鲁棒性。

1. 引言

脑磁共振成像(MRI)作为一种非侵入性的医学影像技术,在神经科学研究和临床诊断中扮演着越来越重要的角色。通过对大脑结构和功能的详细描绘,MRI为理解大脑疾病提供了宝贵的信息。对大规模脑磁共振图像数据进行准确有效的分类,对于疾病的早期诊断、预后评估以及个性化治疗具有至关重要的意义。然而,脑磁共振图像数据通常具有高维度的特性,包含大量的冗余和噪声信息,这给传统的分类方法带来了挑战。

为了克服这些问题,本文提出了一种基于PCA和KSVM的脑磁共振图像分类器。PCA作为一种经典的线性降维方法,能够有效地将高维数据投影到低维空间,保留原始数据的主要信息,同时去除冗余和噪声。KSVM则是一种基于结构风险最小化原则的强大分类器,能够有效地处理非线性可分的数据,并具有较好的泛化能力。结合PCA和KSVM的优势,可以构建一个高效且精确的脑磁共振图像分类器。

2. 方法描述

2.1 数据预处理

原始脑磁共振图像通常包含大量的背景信息和噪声,这些信息对分类没有帮助,甚至可能干扰分类器的性能。因此,在进行特征提取和分类之前,需要对图像进行预处理。预处理步骤通常包括:

  • 图像去噪:采用小波去噪、中值滤波等方法去除图像中的噪声。
  • 图像增强:通过直方图均衡化、对比度拉伸等方法增强图像的对比度,提高图像质量。
  • 图像分割:采用阈值分割、区域生长法、水平集方法等对脑部区域进行分割,去除颅骨、皮肤等无关区域,以减少计算量并提高分类精度。

2.2 特征提取与主成分分析(PCA)

在完成图像分割后,需要提取能够有效表征不同脑部疾病的特征。常用的特征包括纹理特征(例如灰度共生矩阵GLCM提取的特征)、形状特征(例如Hu不变矩)和基于小波变换的特征等。提取特征后,得到一个高维特征向量。

为了减少计算复杂度和噪声影响,利用PCA对高维特征向量进行降维。PCA的核心思想是将原始数据投影到一个新的坐标系,使得新的坐标轴能够最大程度地解释数据的方差。通过保留方差较大的主成分,可以去除冗余和噪声信息,同时保留数据的主要特征。

2.3 核支持向量机(KSVM)分类

降维后的特征向量作为KSVM的输入,用于训练和测试分类器。KSVM是一种基于结构风险最小化原则的分类器,它能够有效地处理非线性可分的数据。通过选择合适的核函数(例如高斯核函数),KSVM可以将低维特征映射到高维特征空间,并在高维空间中寻找最优超平面进行分类。

为了避免过拟合,需要选择合适的正则化参数C和核参数γ。这些参数可以通过交叉验证的方法进行优化。常用的交叉验证方法包括K折交叉验证和留一法交叉验证等。

3. 实验结果与分析

3.1 实验数据集

为了验证该方法的有效性,本文采用公开的脑磁共振图像数据集进行实验。数据集包含正常脑图像和异常脑图像(如神经胶质瘤、脑膜瘤、阿尔茨海默病等)。数据集被随机分为训练集和测试集,比例为7:3或8:2。

3.2 实验设置

  • 特征提取方法:基于灰度共生矩阵提取纹理特征。
  • 降维方法:PCA。
  • 分类器:KSVM,采用高斯核函数。
  • 参数优化方法:网格搜索结合K折交叉验证。

3.3 实验结果

实验结果表明,基于PCA和KSVM的脑磁共振图像分类器能够取得较高的分类准确率。例如,在某数据集上,该方法对正常脑图像和异常脑图像的分类准确率达到了95%以上。与传统的分类方法(如KNN、SVM等)相比,该方法具有更高的分类性能和鲁棒性。

3.4 结果分析

  • PCA的作用:PCA有效地降低了数据维度,减少了噪声影响,提取了数据的主要特征。这使得KSVM能够更高效地处理数据,并提高分类准确率。
  • KSVM的优势:KSVM通过核函数映射处理非线性分类边界,能够有效地处理复杂的脑磁共振图像数据。其强大的非线性分类能力进一步提高了分类准确率。
  • 参数优化的重要性:通过网格搜索结合K折交叉验证进行参数优化,可以找到最优的参数组合,从而提高分类器的性能。

4. 讨论与展望

4.1 与其他方法的比较

与深度学习方法相比,基于PCA和KSVM的方法具有计算效率高、可解释性强等优点。虽然深度学习方法在特征提取方面具有强大的能力,但其需要大量的训练数据和计算资源,且模型结构复杂、可解释性差。而基于PCA和KSVM的方法则能够在小样本医学数据中实现高精度分类,且模型结构简单、易于实现。

4.2 挑战与未来方向

尽管基于PCA和KSVM的脑磁共振图像分类器取得了较好的性能,但仍面临一些挑战和未来研究方向:

  • 特征鲁棒性不足:PCA对噪声敏感,MR图像的伪影可能导致主成分偏离真实特征。未来可以结合字典学习等方法提取更稳健的稀疏特征。
  • 多模态融合困难:实际诊断中常结合T1、T2、FLAIR等多模态MR图像。现有方法难以有效融合跨模态特征。未来可以探索多核SVM等方法为不同模态设计专属核函数。
  • 可解释性有限:KSVM的分类决策过程难以追溯。未来可以结合注意力机制定位关键脑区,提高分类器的可解释性。
  • 端到端特征优化:未来可以将PCA集成到KSVM的损失函数中,实现特征降维与分类器训练的联合优化。
  • 联邦学习框架:在保护患者隐私的前提下,利用多中心MR数据训练分类器。通过联邦核SVM提升模型泛化能力。
  • 与影像组学结合:融合定量影像特征(如体积、表面积、曲率)与PCA特征,构建更全面的分类器。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

% Apply the colorform

lab_he = applycform(I,cform);

% Classify the colors in a*b* colorspace using K means clustering.

% Since the image has 3 colors create 3 clusters.

% Measure the distance using Euclidean Distance Metric.

ab = double(lab_he(:,:,2:3));

nrows = size(ab,1);

ncols = size(ab,2);

ab = reshape(ab,nrows*ncols,2);

nColors = 1;

[cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...

                                     'Replicates',1);

%[cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3);

% Label every pixel in tha image using results from K means

pixel_labels = reshape(cluster_idx,nrows,ncols);

%figure,imshow(pixel_labels,[]), title('Image Labeled by Cluster Index');

% Create a blank cell array to store the results of clustering

segmented_images = cell(1,3);

% Create RGB label using pixel_labels

rgb_label = repmat(pixel_labels,[1,1,3]);

for k = 1:nColors

   colors = I;

   colors(rgb_label ~= k) = 0;

   segmented_images{k} = colors;

end

%

figure, imshow(segmented_images{1});title('Objects in Cluster 1');

%figure, imshow(segmented_images{2});title('Objects in Cluster 2');

seg_img = im2bw(segmented_images{1});

figure, imshow(seg_img);title('Segmented Tumor');

%seg_img = img;

% Extract features using DWT

x = double(seg_img);

m = size(seg_img,1);

n = size(seg_img,2);

%signal1 = (rand(m,1));

%winsize = floor(size(x,1));

%winsize = int32(floor(size(x)));

%wininc = int32(10);

%J = int32(floor(log(size(x,1))/log(2)));

%Features = getmswpfeat(signal,winsize,wininc,J,'matlab');

%m = size(img,1);

%signal = rand(m,1);

signal1 = seg_img(:,:);

%Feat = getmswpfeat(signal,winsize,wininc,J,'matlab');

%Features = getmswpfeat(signal,winsize,wininc,J,'matlab');

[cA1,cH1,cV1,cD1] = dwt2(signal1,'db4');

[cA2,cH2,cV2,cD2] = dwt2(cA1,'db4');

[cA3,cH3,cV3,cD3] = dwt2(cA2,'db4');

DWT_feat = [cA3,cH3,cV3,cD3];

G = pca(DWT_feat);

whos DWT_feat

whos G

g = graycomatrix(G);

stats = graycoprops(g,'Contrast Correlation Energy Homogeneity');

Contrast = stats.Contrast;

Correlation = stats.Correlation;

Energy = stats.Energy;

Homogeneity = stats.Homogeneity;

Mean = mean2(G);

Standard_Deviation = std2(G);

Entropy = entropy(G);

RMS = mean2(rms(G));

%Skewness = skewness(img)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

image.gif 编辑资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
6月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
710 0
|
6月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
209 0
|
6月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
300 8
|
6月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
305 8
|
6月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
257 8
|
6月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
599 0
|
6月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
227 0
|
6月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
346 8
|
6月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
493 12
|
6月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
217 9

热门文章

最新文章

下一篇
开通oss服务