牙齿龋齿检测一直是口腔医学领域的重要课题。传统检测方法主要依赖医生目视检查、X光片或激光荧光检测设备,但这些方法存在主观性强、设备成本高或辐射风险等问题。我们尝试将模糊认知图(Fuzzy Cognitive Map, FCM)与遗传算法(Genetic Algorithm, GA)相结合,构建一个智能化的龋齿程度检测模型。
这个项目的独特价值在于:
系统采用三级处理流程:
mermaid复制graph TD
A[原始图像] --> B(预处理)
B --> C{特征提取}
C --> D[颜色特征]
C --> E[纹理特征]
C --> F[形态特征]
D --> G[FCM-GA模型]
E --> G
F --> G
G --> H[龋齿分级]
FCM节点设计包含7个核心概念节点:
初始权重矩阵W通过专家问卷确定,采用[-1,1]的连续值表示因果关系强度:
GA用于自动优化权重矩阵,关键参数设置:
matlab复制ga_options = optimoptions('ga',...
'PopulationSize', 200,...
'MaxGenerations', 500,...
'FunctionTolerance', 1e-6,...
'MutationFcn', @mutationadaptfeasible);
适应度函数采用临床数据集的分类准确率:
matlab复制function fitness = fcm_fitness(W_vec)
W = reshape(W_vec, [7,7]); % 转换为矩阵
% 运行FCM推理过程
pred_levels = run_fcm_simulation(W, train_data);
fitness = -mean(abs(pred_levels - true_levels)); % 最小化误差
end
matlab复制% 读取并标准化图像
img = imread('tooth.jpg');
img_gray = rgb2gray(img);
img_eq = adapthisteq(img_gray);
% 牙齿区域分割
bw = imbinarize(img_eq, 'adaptive');
bw = bwareaopen(bw, 500); % 去除小面积噪声
tooth_mask = imfill(bw, 'holes');
颜色特征提取:
matlab复制% 在LAB空间计算龋齿区域色差
lab = rgb2lab(img);
a_channel = lab(:,:,2);
caries_region = a_channel(tooth_mask);
color_feat = [mean(caries_region), std(caries_region)];
纹理特征提取:
matlab复制glcm = graycomatrix(img_eq, 'Offset', [0 1; -1 1; -1 0; -1 -1]);
stats = graycoprops(glcm, {'contrast','homogeneity','energy'});
texture_feat = [mean(stats.Contrast), mean(stats.Homogeneity)];
matlab复制function [D_level] = fcm_inference(W, input_features)
% 输入特征归一化
C = (input_features - min_vals) ./ (max_vals - min_vals);
% 迭代推理
for t = 1:100
C_new = tanh(W * C'); % 使用tanh激活函数
if norm(C_new - C') < 1e-4
break;
end
C = C_new';
end
% 反归一化输出
D_level = C(end) * (max_D - min_D) + min_D;
end
收集了300例临床牙齿照片,由3位资深口腔医生独立标注龋齿等级(0-4级)。数据集划分:
标注一致性采用Fleiss' Kappa系数验证(κ=0.78)
matlab复制% 遗传算法优化
W_init = load('expert_W.mat'); % 专家初始权重
lb = -ones(49,1); % 权重下限
ub = ones(49,1); % 权重上限
[W_opt, fval] = ga(@fcm_fitness, 49,...
[],[],[],[], lb, ub, [], ga_options);
save('optimized_W.mat', 'W_opt');
| 方法 | 准确率 | 灵敏度 | 特异度 | F1-score |
|---|---|---|---|---|
| 传统FCM | 72.3% | 68.1% | 75.2% | 0.706 |
| FCM-GA | 85.6% | 83.4% | 87.1% | 0.849 |
| 临床医生 | 89.2% | 87.6% | 90.3% | 0.881 |
建议部署架构:
json复制{
"caries_level": 2,
"confidence": 0.87,
"key_features": {
"color_deviation": 15.2,
"texture_change": 0.67,
"cavity_area": 8.5
}
}
拍摄要求:
结果解读:
多模态数据融合:
模型优化:
matlab复制% 尝试深度强化学习优化
agent = rlPPOAgent(obsInfo, actInfo);
trainOpts = rlTrainingOptions(...
'MaxEpisodes',1000,...
'StopTrainingCriteria','AverageReward');
硬件加速:
关键提示:临床应用中建议始终保持医生复核环节,AI结果应作为辅助参考而非最终诊断
完整实现代码已开源:
matlab复制% 项目主函数
function main()
% 图像读取与预处理
img = imread(input_image);
preprocessed = preprocess_image(img);
% 特征提取
features = extract_features(preprocessed);
% 加载优化后的权重
load('optimized_W.mat');
% FCM推理
caries_level = fcm_inference(W_opt, features);
% 可视化结果
visualize_results(img, caries_level);
end