✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

 👇 关注我领取海量matlab电子书和数学建模资料 

🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。

🔥 内容介绍

一、引言 —— 皮肤癌检测的刚需与 SVM 的破局之力

1.1 皮肤癌筛查的现实痛点与技术缺口

在全球范围内,皮肤癌发病率持续攀升,其中黑色素瘤等恶性类型若能早期发现,5 年生存率可超 90%。但传统检测高度依赖专业皮肤科医生的经验判断,存在三大痛点:一是基层医疗资源匮乏,偏远地区患者难以及时获得专业诊断;二是良性与恶性病变外观相似,易出现误诊漏诊(尤其早期症状不典型);三是人工筛查效率低,无法应对大规模人群普查需求。

传统医学检测手段(如病理活检)虽准确,但耗时久、有创且成本高,亟需一种快速、无创、低成本的 AI 辅助检测方案。而机器学习技术凭借数据驱动的分类能力,成为解决这一问题的关键,其中支持向量机(SVM)因在小样本、高维数据场景下的优异泛化能力,成为皮肤癌检测的理想模型选择。

1.2 SVM 模型:为何成为皮肤癌检测的优选?

支持向量机(SVM)是一种基于统计学习理论的监督学习模型,核心优势精准匹配皮肤癌检测的需求:

  • 小样本适配性:皮肤癌标注数据集(如 HAM10000)样本量有限,SVM 通过 “最大间隔分类器” 设计,能在有限样本中学习稳定特征,避免过拟合;

  • 高维特征处理:皮肤镜图像的特征维度高(颜色、纹理、形状等多维度融合),SVM 无需降维即可高效处理,且不会丢失关键区分信息;

  • 二分类性能强:皮肤癌检测本质是 “良性 / 恶性” 二分类任务,SVM 在二分类场景中准确率、鲁棒性均优于逻辑回归、传统神经网络等模型;

  • 计算成本低:相比深度学习模型,SVM 训练速度快、硬件要求低,可轻松部署到移动端或基层医疗设备,符合实际应用场景。

二、夯实基础:SVM 支持向量机的核心原理

2.1 SVM 的核心思想:找到 “最宽的分类边界”

2.1.1 线性可分场景:最大间隔分类器

SVM 的核心目标是在特征空间中找到一条直线(二维)、平面(三维)或超平面(高维),将两类样本完全分离,且该超平面与两侧最近样本(支持向量)的距离(间隔)最大。

数学逻辑:假设样本特征为x,标签为y∈{+1,-1}(分别对应恶性 / 良性),超平面方程为w·x + b = 0,则间隔计算公式为2/||w||。SVM 通过最小化||w||²/2(等价于最大化间隔),同时满足约束条件y_i(w·x_i + b) ≥ 1(所有样本都在超平面两侧的 “间隔带” 外)。

2.1.2 线性不可分场景:核函数与软间隔

皮肤癌图像特征往往无法线性分离,SVM 通过两大技巧解决:

  • 核函数:将低维特征映射到高维特征空间,使原本线性不可分的样本变得可分。无需直接计算高维映射(避免 “维度灾难”),而是通过核函数间接计算高维空间的内积。常用核函数包括:

    • 线性核:K(x1,x2)=x1·x2(适用于线性可分数据,计算最快);

    • 多项式核:K(x1,x2)=(γx1·x2 + r)^d(捕捉非线性关系,参数较多);

    • RBF 核(径向基函数):K(x1,x2)=exp(-γ||x1-x2||²)(皮肤癌检测首选,自适应拟合复杂特征,仅需调优γ参数)。

  • 软间隔:允许少量样本跨越分类边界,通过引入惩罚系数C平衡 “间隔大小” 与 “分类错误率”——C越大,对错误样本的惩罚越重(更倾向于正确分类,可能过拟合);C越小,越注重间隔最大化(可能欠拟合)。

2.2 SVM 适配皮肤癌检测的关键特性

2.2.1 支持向量的 “关键少数” 作用

SVM 的决策边界仅由少数 “支持向量”(最靠近分类边界的样本)决定,这些样本恰好对应皮肤癌检测中 “难区分的疑似病例”,模型能自动聚焦关键样本,提升诊断的针对性。

2.2.2 抗噪声与泛化能力

通过 RBF 核函数的参数调优,SVM 能有效过滤皮肤镜图像中的噪声(如光照不均、皮肤纹理干扰),同时避免对训练集的过度依赖,在新的临床图像中保持稳定的检测性能。

三、核心设计:基于 SVM 的皮肤癌检测系统完整流程

3.1 系统整体架构:从图像输入到诊断输出

系统采用 “数据预处理→特征提取→模型训练→检测推理” 的闭环架构,全程无人工干预,可直接输出 “良性 / 恶性” 诊断结果及置信度,流程如下:

plaintext

输入皮肤镜图像 → 预处理(去噪+分割)→ 特征提取(颜色+纹理+形状)→ SVM分类器 → 输出诊断结果(良性/恶性)+ 置信度分数

3.2 核心步骤拆解:每一步都藏着关键技巧

3.2.1 数据预处理:净化图像,聚焦病变区域

皮肤镜图像存在光照差异、毛发遮挡、背景冗余等问题,预处理直接影响检测精度:

  • 图像去噪:采用高斯滤波(cv2.GaussianBlur)平滑噪声,保留病变细节;

  • 病变分割:使用 Otsu 阈值分割算法(自动确定最佳阈值),从皮肤背景中分离出病变区域,避免背景干扰;

  • 尺寸归一化:将分割后的病变区域统一缩放至 64×64 像素,降低计算复杂度,保证特征一致性。

3.2.2 特征提取:挖掘区分良恶性的 “关键线索”

特征提取是 SVM 检测的核心,需从病变区域中提取能区分良性(如色素痣)和恶性(如黑色素瘤)的量化特征:

  • 颜色特征:提取 RGB、HSV 颜色空间的均值、方差、熵值(恶性病变颜色更不均匀,方差和熵值更高);

  • 纹理特征:采用局部二值模式(LBP)提取纹理信息 —— 恶性病变纹理更粗糙,LBP 直方图分布更分散;

  • 形状特征:计算病变区域的圆形度、边界复杂度、面积 / 周长比(恶性病变边界更不规则,圆形度更低)。

最终将三类特征拼接为 128 维特征向量,作为 SVM 模型的输入。

⛳️ 运行结果

📣 部分代码

tion

% Convert Image from RGB Color Space to L*a*b* Color Space 

% The L*a*b* space consists of a luminosity layer 'L*', chromaticity-layer 'a*' and 'b*'.

% All of the color information is in the 'a*' and 'b*' layers.

cform = makecform('srgb2lab');

% 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 = 3;

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

                                      'Replicates',3);

%[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, subplot(3,1,1);imshow(segmented_images{1});title('Cluster 1'); subplot(3,1,2);imshow(segmented_images{2});title('Cluster 2');

subplot(3,1,3);imshow(segmented_images{3});title('Cluster 3');

% Feature Extraction

x = inputdlg('Enter the cluster no. containing the disease affected leaf part only:');

i = str2double(x);

% Extract the features from the segmented image

seg_img = segmented_images{i};

% Convert to grayscale if image is RGB

if ndims(seg_img) == 3

   img = rgb2gray(seg_img);

end

%figure, imshow(img); title('Gray Scale Image');

% Evaluate the disease affected area

black = im2bw(seg_img,graythresh(seg_img));

%figure, imshow(black);title('Black & White Image');

m = size(seg_img,1);

n = size(seg_img,2);

zero_image = zeros(m,n); 

%G = imoverlay(zero_image,seg_img,[1 0 0]);

cc = bwconncomp(seg_img,6);

diseasedata = regionprops(cc,'basic');

A1 = diseasedata.Area;

sprintf('Area of the disease affected region is : %g%',A1);

I_black = im2bw(I,graythresh(I));

kk = bwconncomp(I,6);

leafdata = regionprops(kk,'basic');

A2 = leafdata.Area;

sprintf(' Total leaf area is : %g%',A2);

%Affected_Area = 1-(A1/A2);

Affected_Area = (A1/A2);

if Affected_Area < 1

    Affected_Area = Affected_Area+0.15;

end

sprintf('Affected Area is: %g%%',(Affected_Area*100))

% Create the Gray Level Cooccurance Matrices (GLCMs)

glcms = graycomatrix(img);

% Derive Statistics from GLCM

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

Contrast = stats.Contrast;

Correlation = stats.Correlation;

Energy = stats.Energy;

Homogeneity = stats.Homogeneity;

Mean = mean2(seg_img);

Standard_Deviation = std2(seg_img);

Entropy = entropy(seg_img);

RMS = mean2(rms(seg_img));

%Skewness = skewness(img)

Variance = mean2(var(double(seg_img)));

a = sum(double(seg_img(:)));

Smoothness = 1-(1/(1+a));

Kurtosis = kurtosis(double(seg_img(:)));

Skewness = skewness(double(seg_img(:)));

% Inverse Difference Movement

m = size(seg_img,1);

n = size(seg_img,2);

in_diff = 0;

for i = 1:m

    for j = 1:n

        temp = seg_img(i,j)./(1+(i-j).^2);

        in_diff = in_diff+temp;

    end

end

IDM = double(in_diff);

    

feat_disease = [Contrast,Correlation,Energy,Homogeneity, Mean, Standard_Deviation, Entropy, RMS, Variance, Smoothness, Kurtosis, Skewness, IDM];

🔗 参考文献

[1]张琨,曹宏鑫,刘凤玉,等.一种基于SVM的网络入侵检测模型[J].南京理工大学学报, 2007, 31(4):6.DOI:10.3969/j.issn.1005-9830.2007.04.001.

图片

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐