【图像识别】基于matlab细胞识别和边缘检测【含Matlab源码 210期】

一、简介

实践表现,图像预处理技术在多个领域均有涉及,依据需求的不同,要求预处理需对图像特征予以凸显,处理方法也存在明显差胞图像预处理以増强和去噪处理为主要工作内容,图像预处理结果如胞检测准胞图像采集角度、视觉有细胞模糊的情况存处理呈模糊状胞图像图像和视频的相关打码技术,即在具体操作于一个区域内像素值和分布于其他区域的像应用,来对原来区域像素值处理模糊细胞进行代替。

二、源代码

%%
%--------第一部分:对血液图片进行处理,提取图片中的红细胞的形态特征,实现红细胞计数--------%
close all;
clear all;
clc;
I = imread('bloodtest1.jpg');%读取血液图像
 
%将彩图转为灰度图
I = rgb2gray(I);        
figure(1);
imshow(I);
title('灰度处理后的细胞图像');
 
%平滑处理
h = fspecial('average',3); %3*3均值滤波模板
I = imfilter(I, h, 'replicate'); %重复填充边界
figure(2);
imshow(I);
title('平滑处理后的细胞图像');
 
%二值化处理
t = graythresh(I);        %计算阈值t
C = im2bw(I,t);           %根据阈值二值化图像
figure(3);
subplot(1,3,1),imshow(C);title('二值化处理后的细胞图像');
 
%边缘的红细胞的处理,避免将边缘的红细胞去除
[r,c] = size(C);
C(1,:) = 1;
C(:,1) = 1;
C(:,c) = 1;         
C(2,:) = 0;
C(:,2) = 0;
C(:,c-1) = 0; 
C = not(C);
 
%填充处理
D=imfill(C,8,'holes');%对处理后的红细胞进行填充处理
figure(3),subplot(1,3,2),imshow(C);title('第一步填充');
D = D - C;
D = imfill(D,8,'holes');
figure(3),subplot(1,3,3),imshow(D);title('第二步填充');
 
%去除无关杂质
[L,N] = bwlabel(D,8);     
s = regionprops(L,'Area');
F = bwareaopen(D,130,8);  %去除杂质,将面积小于130个像素点的区域删除。
[L,N] = bwlabel(F,8);     
figure,imshow(F);title('去除杂质后的填充疑似红细胞图像');
 
%坐标提取
B = bwboundaries(F);      %疑似红细胞边界提取
for g = 1:length(B)
    boundary = B{
     g};      %依次提取每个目标的边界
    Y = boundary(:,1);
    X = boundary(:,2);
    Ymax = max(Y);        %疑似红细胞上边界
    Ymin = min(Y);        %疑似红细胞下边界
    Xmax = max(X);        %疑似红细胞左边界
    Xmin = min(X);        %疑似红细胞右边界
    
    x(g) = floor((Xmax + Xmin)/2);%记录疑似红细胞的横坐标
    y(g) = floor((Ymax + Ymin)/2);%记录疑似红细胞的纵坐标 
end
 
%目标提取及显示
figure,imshow(I);title('识别得的红细胞');
for i = 1:g 
    rectangle('Position',[x(i)-21 y(i)-21 42 42],...
              'edgecolor','r','LineWidth',2); %显示红细胞框图
end
 
%%
%--------第二部分:对单个红细胞的截取以进行轮廓分析和边缘检测--------%
 
clear all;
clear
clc;
 
%选取要分析的单个疑似红细胞
figure();
A = imread('bloodtest1.jpg');
imshow(A);title('请确定两个点来截取所要分析的红细胞图像');
[x,y] = ginput(2);    %利用ginput函数确定图像上的两点,返回值是两点的坐标
pic_1 = imcrop(A,[x(1),y(1),abs(x(1)-x(2)),abs(y(1)-y(2))]);
%利用imcrop函数对图像进行切割,输入参数是一个定点坐标,
%从该定点出发向右abs(x(1)-x(2)),向下abs(y(1)-y(2))的区域进行切割
figure,imshow(pic_1);title('所截取的单个红细胞图像');
imwrite(pic_1,'bloodtest1_part.jpg');
imgsrc = imread('bloodtest1_part.jpg');
[y, x, dim] = size(imgsrc);
 
%转换为灰度图
if dim>1
    imgsrc = rgb2gray(imgsrc);
end
sigma = 1;
gausFilter = fspecial('gaussian', [3,3], sigma);
img= imfilter(imgsrc, gausFilter, 'replicate');
 
%显示Grayscale三维图像
zz = double(img);
[xx, yy] = meshgrid(1:x, 1:y);
figure()
    surf(yy, xx, zz);
    xlabel('y');
    ylabel('x');
    zlabel('Grayscale');
    title('所截取的单个红细胞轮廓边缘的三维示意图');
    axis tight 
 
%边缘检测
BW = im2bw(img,0.4);
IBW = ~BW;
F1 = imfill(IBW,'holes');
SE = ones(3);
F2 = imdilate(F1,SE,'same');
BW2 = bwperim(F2);
 
%显示所截取疑似红细胞的轮廓边缘
figure()    
    subplot(2,2,1);
        imshow(imgsrc);
        title('灰度处理后的所截取的疑似红细胞图像');
    subplot(2,2,2);
        imshow(img);%高斯滤波后
        title('高斯滤波后的截取细胞图像');
    subplot(2,2,3);
        ed = edge(img, 'canny', 0.5); %Matlab自带的canny边缘检测函数
        imshow(ed);
        title('Canny后的截取细胞图像');
    subplot(2,2,4);
        imshow(BW2);%边缘轮廓
        title('截取细胞图像的边缘检测');
        
 

三、运行结果

【图像识别】基于matlab细胞识别和边缘检测【含Matlab源码 210期】_第1张图片
【图像识别】基于matlab细胞识别和边缘检测【含Matlab源码 210期】_第2张图片

四、备注

完整代码或者代写添加QQ 2449341593
往期回顾>>>>>>
【图像识别】基于matlab路面裂缝识别含GUI【含Matlab源码 009期】
【图像识别】基于matlab身份证号码识别【含Matlab源码 014期】
【图像压缩】基于matlab图像处理教程系列之图像压缩【含Matlab源码 024期】
【图像分割】基于matlab图像处理教程系列之图像分割(一)【含Matlab源码 025期】
【图像分割】基于matlab图像处理教程系列之图像分割(二)【含Matlab源码 026期】
【模式识别】基于matlab指纹识别【含Matlab源码 029期】
【模式识别】基于matlab银行卡号识别【含Matlab源码 030期】
【图像聚类】基于matlab FCM和改进的FCM脑部CT图像聚类【含Matlab源码 074期】
【图像评价】基于matlab CCF算法的图像质量评价【含Matlab源码 075期】
【图像增强】基于matlab局部对比度增强的CLAHE算法之直方图增强【含Matlab源码 076期】
【图像融合】基于matlab Frequency Partition之图像融合【含Matlab源码 077期】
【图像评价】基于matlab SVM之图像无参考质量评价【含Matlab源码 078期】
【图像处理】基于matlab DWT+DCT+PBFO改进图像水印隐藏提取含GUI【含Matlab源码 081期】
【图像变换】基于matalb DIBR-3D图像变换【含Matalb源码 082期】
【图像融合】基于matlab CBF算法的图像融合【含Matlab源码 083期】
【图像分割】基于matlab模糊聚类算法FCM的图像分割【含Matlab源码 084期】
【图像分割】基于形态学重建和过滤改进FCM算法(FRFCM)的的图像分割【Matlab 085期】
【图像去噪】基于matlab自适应形态学的图像去噪【含Matlab源码 086期】
【图像增强】基于matlab DEHAZENET和HWD的水下去散射图像增强【含Matlab 087期】
【图像增强】基于matlab PSO寻优ACE的图像增强【含Matlab源码 088期】
【图像增强】基于matlab区域相似变换函数和蜻蜓算法之灰度图像增强【含Matlab源码 089期】
【图像重建】基于matlab图像重建之ASTRA算法【含Matlab源码 090期】
【图像分割】基于matlab四叉树图像分割【含Matlab源码 091期】
【图像分割】基于matlab心脏中心线提取【含Matlab源码 092期】
【图像识别】基于matlab svm植物叶子疾病检测和分类【含Matlab源码 093期】
【图像识别】基于matlab模板匹配之手写数字识别系统GUI界面【含Matlab源码 094期】
【图像识别】基于matlab不变矩的数字验证码识别含GUI界面【含Matlab源码 095期】
【图像识别】基于matlab条形码识别系统【含Matlab源码 096期】
【图像识别】基于matlab RGB和BP神经网络的人民币识别系统含GUI界面【含Matlab源码 097期】
【图像识别】基于matlab cnn卷积神经网络之验证码识别【含Matlab源码 098期】
【图像直线拟合】基于matlab最小二乘法的图像直线拟合【含Matlab源码 100期】
【图像去雾】基于matlab暗通道之图像去雾【含Matlab源码 101期】
【图像分割】基于matlab直觉模糊C均值聚类的图像分割IFCM【含Matlab源码 120期】
【图像分割】基于matlab最大类间方差法(otsu)图像分割【含Matlab源码 121期】
【模式识别】基于matlab银行监控系统人脸识别【含Matlab源码 125期】
【模式识别】基于matlab GUI界面的疲劳检测系统【含Matlab源码 126期】
【图像识别】基于matlab国外车牌识别【含Matlab源码 128期】
【图像分割】基于matlab蚁群优化模糊聚类的图像分割【含Matlab源码 130期】
【模式识别】基于matalb GUI界面的水果检测系统【含Matlab源码 173期】
【模式识别】基于matalb GUI界面的水果分类系统【含Matlab源码 174期】
【模式识别】基于matalb GUI界面的水果分级系统【含Matlab源码 175期】
【模式识别】基于matlab人脸识别之检测脸、眼、鼻子和嘴【含Matlab源码 178期】
基于matlab GUI界面处理录音与音频【含Matlab源码 181期】
【图像处理】基于matlab GUI界面的图像加解密【含Matlab源码 182期】
【模式识别】基于matlab GUI界面BP网络之手写体大写字母识别【含Matlab源码 183期】
【图像分割】基于matlab GUI界面医学影像分割【含Matlab源码 184期】
【图频处理】基于matlab GUI界面环图像处理与音乐播放系统【含Matlab源码 185期】
【图像隐藏】基于matlab Laguerre 变换的图像隐藏【含Matlab源码 193期】
【图像处理】基于matlab dwt函数实现二维小波变换【含Matlab源码 198期】

【图像处理】基于matlab分形插值算法调换图片【含Matlab源码 197期】
【图像边缘检测】基于matlab GUI界面图像边缘检测系统【含Matlab源码 203期】
【图像几何运算】基于matlab GUI界面之图像几何运算系统【含Matlab源码 206期】
【图像处理】基于matlab GUI界面之图像处理系统【含Matlab源码 207期】

你可能感兴趣的:(matlab,图像处理)