模糊集方法用于图像增强.
首先要定义多个个分段的隶属度函数.
指导思想是:
1. 让低灰度更低;
2. 让高灰度更高;
3. 让中间灰度尽量保持不变.
操作步骤上,
1. 首先定义隶属度函数. 分别定义dark, gray和bright相对于灰度值z的隶属曲线.
% 插补出隶属函数
mu_d_z_cp=[1,1,0,0,0];
mu_g_z_cp=[0,0,1,0,0];
mu_b_z_cp=[0,0,0,1,1];
z_cp=[0,70,127,184,255];
mu_d_z=interp1(z_cp,mu_d_z_cp,0:L-1,'linear');
mu_g_z=interp1(z_cp,mu_g_z_cp,0:L-1,'linear');
mu_b_z=interp1(z_cp,mu_b_z_cp,0:L-1,'linear');
figure;plot(z,mu_d_z,'r',z,mu_g_z,'g',z,mu_b_z,'b');
legend('dark','gray','bright');
2. 根据三个灰度曲线加权得到一条灰度映射曲线.
% 对每一个灰度计算模糊值
fuzzy_value=(mu_d_z.*vd+mu_g_z.*vg+mu_b_z.*vb)./(mu_d_z+mu_g_z+mu_b_z);
fuzzy_value=uint8(fuzzy_value);
fuzzy_value(fuzzy_value>255)=255;
fuzzy_value(fuzzy_value<0)=0;
figure;plot(z,fuzzy_value);title('fuzzy value');grid on;
3. 根据灰度变换曲线做灰度映射
ImgOut=fuzzy_value(ImgIn+1);
figure;
subplot(121);imshow(ImgIn);title('原图');
subplot(122);imshow(ImgOut);title('模糊增强后的图像');
总结
1. 模糊集方法的隶属函数依赖于较多的先验知识.
2. 隶属度函数的选取要事先确定.