clear;
clc;
I=imread('picture.png');
im_info=imfinfo('picture.png');%读取图像信息
GrayLevel=2^(im_info.BitDepth/3);%单通道图像灰度级
figure('Name','各通道直方图均衡','NumberTitle','off');
[H,W,N] = size(I); %图像的高度H,宽度W,通道数N
%-------------------------R通道直方图均衡化处理----------------------------%
I_R=I(:,:,1);%读取R分量
EQ_R=histeq(I_R);%R通道直方图均衡化处理
subplot(3,4,1);
imhist(I_R);
title('R_orig')
subplot(3,4,2);
imshow(I_R);
title('R_orig')
hst_R=imhist(EQ_R);%均衡化后的直方图
subplot(3,4,3);
imshow(EQ_R);
title('R_equ')
subplot(3,4,4);
imhist(EQ_R);
title('R_equ');
%-------------------------G通道直方图均衡化处理----------------------------%
I_G=I(:,:,2);%读取G分量
EQ_G=histeq(I_G);%G通道直方图均衡化处理
subplot(3,4,5);
imhist(I_G);
title('G_orig')
subplot(3,4,6);
imshow(I_G);
title('G_orig')
hst_G=imhist(EQ_G);%均衡化后的直方图
subplot(3,4,7);
imshow(EQ_G);
title('G_equ')
subplot(3,4,8);
imhist(EQ_G);
title('G_equ');
%-------------------------B通道直方图均衡化处理----------------------------%
I_B=I(:,:,3);%读取B分量
EQ_B=histeq(I_B);%B通道直方图均衡化处理
subplot(3,4,9);
imhist(I_B);
title('B_orig')
subplot(3,4,10);
imshow(I_B);
title('B_orig')
hst_B=imhist(EQ_B);%均衡化后的直方图
subplot(3,4,11);
imshow(EQ_B);
title('B_equ')
subplot(3,4,12);
imhist(EQ_B);
title('B_equ');
I_equ=cat(3,EQ_R,EQ_G,EQ_B);%直方图均衡化后的图像
figure('Name','直方图均衡','NumberTitle','off');
subplot(1,2,1);
imshow(I);
title('原图像');
subplot(1,2,2);
imshow(I_equ);
title('直方图均衡化后的图像');
%----------------------------R通道迭代法求阈值---------------------------------%
%设置初始阈值,取最大值和最小值的中间值
EQ_R_d=double(EQ_R);%将灰度值矩阵转化为double型
Tmax=max(EQ_R_d);
Tmin=min(EQ_R_d);
T=0.5*(Tmax+Tmin);
d=1;
while (d<0.5)
zk_num=0;
zc_num=0;
zk_gray=0;
zc_gray=0;
for i=1:H
for j=1:W
Tn=EQ_R_d(i,j);
if (Tn<=T)
zc_num=zc_num+1;
zc_gray=zc_gray+Tn;
else
zk_num=zk_num+1;
zk_gray=zk_gray+Tn;
end
end
end
Tc=zc_gray/zc_num;
Tk=zk_gray/zk_num;
Ti=T;
T=0.5*(Tc+Tk);
d=abs(T-Ti);
end
for i=1:H
for j=1:W
if( EQ_R_d(i,j)<=T)
EQ_R_d(i,j)=0;
end
end
end
R_T=uint8(EQ_R_d);
%----------------------------G通道迭代法求阈值---------------------------------%
%设置初始阈值,取最大值和最小值的中间值
EQ_G_d=double(EQ_G);%将灰度值矩阵转化为double型
Tmax=max(EQ_G_d);
Tmin=min(EQ_G_d);
T=0.5*(Tmax+Tmin);
d=1;
while (d<0.5)
zk_num=0;
zc_num=0;
zk_gray=0;
zc_gray=0;
for i=1:H
for j=1:W
Tn=EQ_G_d(i,j);
if (Tn<=T)
zc_num=zc_num+1;
zc_gray=zc_gray+Tn;
else
zk_num=zk_num+1;
zk_gray=zk_gray+Tn;
end
end
end
Tc=zc_gray/zc_num;
Tk=zk_gray/zk_num;
Ti=T;
T=0.5*(Tc+Tk);
d=abs(T-Ti);
end
for i=1:H
for j=1:W
if( EQ_G_d(i,j)<=T)
EQ_G_d(i,j)=0;
end
end
end
G_T=im2uint8(EQ_G_d);
%----------------------------B通道迭代法求阈值---------------------------------%
%设置初始阈值,取最大值和最小值的中间值
EQ_B_d=double(EQ_B);%将灰度值矩阵转化为double型
Tmax=max(EQ_B_d);
Tmin=min(EQ_B_d);
T=0.5*(Tmax+Tmin);
d=1;
while (d<0.5)
zk_num=0;
zc_num=0;
zk_gray=0;
zc_gray=0;
for i=1:H
for j=1:W
Tn=EQ_B_d(i,j);
if (Tn<=T)
zc_num=zc_num+1;
zc_gray=zc_gray+Tn;
else
zk_num=zk_num+1;
zk_gray=zk_gray+Tn;
end
end
end
Tc=zc_gray/zc_num;
Tk=zk_gray/zk_num;
Ti=T;
T=0.5*(Tc+Tk);
d=abs(T-Ti);
end
for i=1:H
for j=1:W
if( EQ_B_d(i,j)<=T)
EQ_B_d(i,j)=0;
end
end
end
B_T=uint8(EQ_B_d);
figure();
subplot(1,3,1);
imshow(R_T);
subplot(1,3,2);
imshow(G_T);
subplot(1,3,3);
imshow(B_T);
%--------------------得到阈值分割后得到的彩色图像-------------------%
I_T=cat(3,R_T,G_T,B_T);%粗提取后的图像
figure('Name','图像','NumberTitle','off');
subplot(1,3,1);
imshow(I);
title('原图像');
subplot(1,3,2);
imshow(I_equ);
title('直方图均衡化后的图像');
subplot(1,3,3);
imshow(I_T);
title('RGB三通道求阈值');
%----------------根据三个通道灰度的差值差值去除背景------------------%
for i=1:H
for j=1:W
if I_T(i,j,2)-I_T(i,j,1)>20||I_T(i,j,2)-I_T(i,j,3)>20
I_T(i,j,1)=255;
I_T(i,j,2)=255;
I_T(i,j,3)=255;
end
end
end
figure('Name','除去背景','NumberTitle','off');
imshow(I_T);
%----------------------------中值滤波---------------------------------%
%使离散点与边界连接起来
figure('Name','中值滤波','NumberTitle','off');
R_M=medfilt2(R_T,[5 5]);
G_M=medfilt2(G_T,[5 5]);
B_M=medfilt2(B_T,[5 5]);
I_M=cat(3,R_M,G_M,B_M);
imshow(I_M)
%----------------------------转化为二值图像---------------------------------%
%生成细胞核的轮廓
figure('Name','二值','NumberTitle','off');
I_bw=im2bw(I_M);%转化为二值图像
imshow(I_bw);
I_bw_a=bwareaopen(~I_bw,100,8);%除去背景中不必要的小面积
figure('Name','除去小面积','NumberTitle','off');
imshow(I_bw_a);
%----------------------------得到细胞核的彩色图像---------------------------------%
%该部分利用生成的细胞核的二值图像对原来直方图均衡后得到的彩色图像进行分割
core=I_equ;
for i=1:H
for j=1:W
if I_bw_a(i,j)==0;
core(i,j,1)=255;
core(i,j,2)=255;
core(i,j,3)=255;
end
end
end
figure('Name','细胞核彩色图像','NumberTitle','off');
imshow(core);
%----------------------------转化为灰度图像---------------------------------%
gray=rgb2gray(core);
figure('Name','转化为灰度图像','NumberTitle','off');
imshow(gray)
%----------------------------细胞核形态特征提取------------------------------%
morphology(I_bw_a);
%----------------------------细胞核颜色特征提取------------------------------%
color(core);
%----------------------------细胞核纹理特征提取------------------------------%
textural(core);
%----------------------------细胞核光密度特征提取----------------------------%
optical(core);
CCR.rar_Cell density_ccr_matlab 图像处理_癌细胞的识别_细胞
版权申诉
50 浏览量
2022-09-23
20:36:26
上传
评论
收藏 63KB RAR 举报
朱moyimi
- 粉丝: 61
- 资源: 1万+
最新资源
- 历届(第1-21届)希望杯数学竞赛初一试题及答案(最新整理).doc全国数学邀请赛(264页资料)
- 水滴.psd
- TokenPocket_V2.1.2_release.apk
- Apache-druid-kafka-rce.yaml
- 基于C#的ASP.NET数据库原理及应用技术课程指导平台的开发
- 基于ROS的智能车轨迹跟踪算法的仿真与设计源码运用PID跟踪算法.zip.zip
- Bug Bounty Tip - i春秋Self-XSS变废为宝的奇思妙想
- 1991-2015年全国初中化学竞赛复赛试题汇编(212页)(24年竞赛复赛真题).docx天原杯
- Apache Flink 未授权访问+远程代码执行.pdf
- hadoop-基于hive的聊天数据分析报表可视化案例数据源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈