main.m
%plotE;
%plotE;
plotE;
hotspot;
hotspot_data;
plotE.m
% % figure()
close; % close all figure
clc;clear;clc;
%addr='C:\Users\results_.mat';
%load(addr)
load('C:\Users\a208\Desktop\xk_m_file\30sanshejiemian\30sanshe\11.mat')
pic_x=lum.x;
pic_y=lum.y;
pic_e=lum.z;
I=pic_e;
num_x=size(pic_x);
num_y=size(pic_y);
I3 = imadjust(I);
%%%%I3=imadjust(I,[0.2 0.5],[0 1]); %调整灰度范围
% 灰度图像二值化,全局阈值分割最大化类间方差
level1 = graythresh(I3);%%%%%level1是计算得阈值
%%%%graythresh是一个函数,功能是使用最大类间方差法找到图片的一个合适的阈值...
...利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像
BW = im2bw(I3,level1);%%%%%%%%%根据阈值二值化
figure(1),imshow(BW)
bw=~BW;
[L,N] = bwlabel(bw); % N即为目标个数,二值化去反
% 标记目标物
figure(2),imshow(I3)
hold on
for k = 1:N
[r,c] = find(L == k);
rbar = mean(r);
cbar = mean(c);
plot(cbar,rbar,'marker','o','markeredgecolor','r','markersize',10);
end
%%%%%%%% k均值聚类提取图像模式%%%%
%%访问kmeans函数%%%%%%%%%
% for k=1:3
% kmeans
% figure(3)
%pcolor(temp1);
k=3;
[m, n, p] = size(I);
[C, label, J] = kmeans(I, k);
I_seg = reshape(C(label, :), m, n, p);
figure(3)
subplot(1, 2, 1), imshow(I, []), title('原图')
subplot(1, 2, 2), imshow(uint8(I_seg), []), title('聚类图')
figure(4)
plot(1:length(J), J), xlabel('迭代次数')
pause(0.5);
% end
pic_ee=I_seg;
level=max(max(I_seg));
for j=1:length(pic_x)
for k=1:length(pic_y)plot
if pic_ee(j,k) < level
pic_ee(j,k)=0;
else
pic_ee(j,k)=1;
end
end
end
figure(5)
nz=nnz(pic_ee);
spy(pic_ee);
hotspot.m
%%%定位热点坐标
for i=1:length(pic_x)
for j=1:length(pic_y)
if pic_ee(i,j)==1
qq(i,j)=pic_e(i,j);
else if pic_ee(i,j)==0
qq(i,j)=0;
end
end
end
end
[L1,Ns] = bwlabel(qq); % N即为目标个数,二值化去反
% 标记热点
figure(5),imshow(qq)
hold on
for k1 = 1:Ns
[r1,c1] = find(L1 == k1);
rbar = mean(r1);
cbar = mean(c1);
plot(cbar,rbar,'marker','o','markeredgecolor','r','markersize',10);
end