【细胞分割】基分水岭算法实现细胞分割计数matlab源码含 GUI
【细胞分割】基分水岭算法实现细胞分割计数matlab源码含 GUI
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
一、简介
分水岭算法是一种图像区域分割法,分割的过程中将图片转化为灰度图,然后我会将灰度值看作是海拔,然后向较低点注水,这种基于地形学的解释,我们着重考虑三种点:
极小值点,该点对应一个盆地的最低点,当我们在盆地里滴一滴水的时候,由于重力作用,水最终会汇聚到该点。注意:可能存在一个最小值面,该平面内的都是极小值点。
盆地的其它位置点,该位置滴的水滴会汇聚到局部最小点。
盆地的边缘点,是该盆地和其它盆地交接点,在该点滴一滴水,会等概率的流向任何一个盆地。
明白上述三种点之后,我们开始往盆地的极小值点注水,然后随着注水的深入,每一个极小值点慢慢的向外扩展,然后知道两个盆地的水汇合,汇合处就是我们需要的分水岭。
从下图可以直观理解一下,首先这三块区域都含有极小值点
然后逐渐填充就能获得分水岭(即分界线)
得到分界线就能完成图像分割:
二、源代码
function varargout = CellCount ( varargin ) % CELLCOUNT M-file for CellCount.fig % CELLCOUNT, by itself, creates a new CELLCOUNT or raises the existing % singleton*. % % H = CELLCOUNT returns the handl e to a new CELLCOUNT or the handle to % the existing singleton*. % % CELLCOUNT(’CALLBACK’,hObject,eventData,handles,...) calls the local % function named CALLBACK in CELLCOUNT.M with the given input arguments. % % CELLCOUNT(’Property’,’Value’,...) creates a new CELLCOUNT or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before CellCount_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to CellCount_OpeningFcn via varargin. % % *See GUI Options on GUIDE’s Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help CellCount % Last Modified by GUIDE v2.5 01-May-2015 19:43:57 % Begin initialization code - DO NOT EDIT gui_Singleton = 1 ; gui_State = struct ( ’gui_Name’ , mfilename , ... ’gui_Singleton’ , gui_Singleton , ... ’gui_OpeningFcn’ , @ CellCount_OpeningFcn , ... ’gui_OutputFcn’ , @ CellCount_OutputFcn , ... ’gui_LayoutFcn’ , [] , ... ’gui_Callback’ , []); if nargin && ischar ( varargin { 1 }) gui_State . gui_Callback = str2func ( varargin { 1 }); end if nargout [ varargout { 1 : nargout }] = gui_mainfcn ( gui_State , varargin {:}); else gui_mainfcn ( gui_State , varargin {:}); end % End initialization code - DO NOT EDIT % --- Executes just before CellCount is made visible. function CellCount_OpeningFcn ( hObject , eventdata , handles , varargin ) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to CellCount (see VARARGIN) % Choose default command line output for CellCount handles . output = hObject ; % Update handles structure guidata ( hObject , handles ); % UIWAIT makes CellCount wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = CellCount_OutputFcn ( hObject , eventdata , handles ) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout { 1 } = handles . output ; function edit1_Callback ( hObject , eventdata , handles ) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit1 as text % str2double(get(hObject,’String’)) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn ( hObject , eventdata , handles ) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal ( get ( hObject , ’BackgroundColor’ ), get ( 0 , ’defaultUicontrolBackgroundColor’ )) set ( hObject , ’BackgroundColor’ , ’white’ ); end function edit3_Callback ( hObject , eventdata , handles ) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit3 as text % str2double(get(hObject,’String’)) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn ( hObject , eventdata , handles ) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal ( get ( hObject , ’BackgroundColor’ ), get ( 0 , ’defaultUicontrolBackgroundColor’ )) set ( hObject , ’BackgroundColor’ , ’white’ ); end function edit4_Callback ( hObject , eventdata , handles ) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit4 as text % str2double(get(hObject,’String’)) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn ( hObject , eventdata , handles ) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal ( get ( hObject , ’BackgroundColor’ ), get ( 0 , ’defaultUicontrolBackgroundColor’ )) set ( hObject , ’BackgroundColor’ , ’white’ ); end function edit5_Callback ( hObject , eventdata , handles ) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit5 as text % str2double(get(hObject,’String’)) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn ( hObject , eventdata , handles ) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal ( get ( hObject , ’BackgroundColor’ ), get ( 0 , ’defaultUicontrolBackgroundColor’ )) set ( hObject , ’BackgroundColor’ , ’white’ ); end function edit6_Callback ( hObject , eventdata , handles ) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit6 as text % str2double(get(hObject,’String’)) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn ( hObject , eventdata , handles ) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal ( get ( hObject , ’BackgroundColor’ ), get ( 0 , ’defaultUicontrolBackgroundColor’ )) set ( hObject , ’BackgroundColor’ , ’white’ ); end % --- Executes on button press in pushbutton1. function pushbutton1_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton3. function pushbutton3_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton5. function pushbutton5_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton6. function pushbutton6_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton7. function pushbutton7_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function file_Callback ( hObject , eventdata , handles ) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function open_Callback ( hObject , eventdata , handles ) % hObject handle to open (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global im ; [ filename , pathname ]= uigetfile ({ ’*.jpg’ ; ’*bmp’ ; ’*.gif’ }, ’选择图片’ ); %合成图片路径+文件名 str =[ pathname filename ]; %读取图片 im = imread ( str ); %使用第一个axes axes ( handles . axes0 ); imshow ( im ); % -------------------------------------------------------------------- function save_Callback ( hObject , eventdata , handles ) % hObject handle to save (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton8. function pushbutton8_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close ( gcf ) %关闭当前figure句柄 % --- Executes on button press in pushbutton9. function pushbutton9_Callback ( hObject , eventdata , handles ) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global im global I global C %%%%%%%%%%%%%%%%%% I = im ; R = I (:,:, 1 ); G = I (:,:, 2 ); B = I (:,:, 3 ); K = rgb2hsv ( I ); H = K (:,:, 1 ); S = K (:,:, 2 ); V = K (:,:, 3 ); [ cenwhite , copywhite ]= Kmeans ( H , 3 ); cenwhite ; A = copywhite ; [ m , n ]= size ( A ); for i = 1 : m for j = 1 : n if A ( i , j ) == cenwhite ( 2 ) A ( i , j )= 1 ; else A ( i , j )= 0 ; end end
三、运行结果
四、参考文献
[1]方红萍, 方康玲, 刘新海. 自适应H-minima的改进分水岭堆叠细胞分割方法[J]. 计算机应用研究, 2016(5):1587-1590.
五、代码下载
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
