国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【圖像分割】基于類間方差閾值圖像分割與腐蝕膨脹matlab源碼

2021-08-29 00:09 作者:Matlab工程師  | 我要投稿

一、簡介

1 概述
在計算機視覺和圖像處理領(lǐng)域,最大類間方差法(otsu)又叫做大津法,是1979年由日本學者大津提出的,是一種自適應(yīng)閾值分割方法,減少灰階圖像等級成為一個二值圖像。該算法假定圖像分為兩類(符合雙峰直方圖分布,兩類分別稱為前景/目標像素和背景像素),然后計算出一個最優(yōu)的閾值將將此圖像分為兩類使得其類間方差最大。Otsu是費舍爾離散判斷分析的一維表現(xiàn)形式。

2 方法

在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述

二、源代碼

function varargout = experiment3(varargin) % EXPERIMENT3 MATLAB code for experiment3.fig % ? ? ?EXPERIMENT3, by itself, creates a new EXPERIMENT3 or raises the existing % ? ? ?singleton*. % % ? ? ?H = EXPERIMENT3 returns the handle to a new EXPERIMENT3 or the handle to % ? ? ?the existing singleton*. % % ? ? ?EXPERIMENT3('CALLBACK',hObject,eventData,handles,...) calls the local % ? ? ?function named CALLBACK in EXPERIMENT3.M with the given input arguments. % % ? ? ?EXPERIMENT3('Property','Value',...) creates a new EXPERIMENT3 or raises the % ? ? ?existing singleton*. ?Starting from the left, property value pairs are % ? ? ?applied to the GUI before experiment3_OpeningFcn gets called. ?An % ? ? ?unrecognized property name or invalid value makes property application % ? ? ?stop. ?All inputs are passed to experiment3_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 experiment3 % Last Modified by GUIDE v2.5 31-May-2018 16:55:57 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', ? ? ? mfilename, ... ? ? ? ? ? ? ? ? ? 'gui_Singleton', ?gui_Singleton, ... ? ? ? ? ? ? ? ? ? 'gui_OpeningFcn', @experiment3_OpeningFcn, ... ? ? ? ? ? ? ? ? ? 'gui_OutputFcn', ?@experiment3_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 experiment3 is made visible. function experiment3_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 experiment3 (see VARARGIN) % Choose default command line output for experiment3 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes experiment3 wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = experiment3_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 % --- 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) shiyan3 = rgb2gray(imread('shiyan3.bmp')); size_filter_m = str2double(get(handles.edit1,'string')); size_filter_n = str2double(get(handles.edit2,'string')); if isnan(size_filter_m) ? ?size_filter_m = 3; end if isnan(size_filter_n) ? ?size_filter_n = 3; end shiyan3_filter = medfilt2(shiyan3,[size_filter_m,size_filter_n]); ? ?%中值濾波 threshold = graythresh(shiyan3_filter); %用最大類間方差法找到閾值 shiyan3_seg = im2bw(shiyan3_filter,threshold); ?%閾值分割 axes(handles.axes1); imshow(shiyan3); title('原圖'); axes(handles.axes2); imshow(shiyan3_filter); title('中值濾波'); axes(handles.axes3); imshow(shiyan3_seg); title('類間方差閾值分割'); % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton2 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) shiyan3 = rgb2gray(imread('shiyan3.bmp')); size_filter_m = str2double(get(handles.edit1,'string')); size_filter_n = str2double(get(handles.edit2,'string')); if isnan(size_filter_m) ? ?size_filter_m = 3; end if isnan(size_filter_n) ? ?size_filter_n = 3; end shiyan3_filter = medfilt2(shiyan3,[size_filter_m,size_filter_n]); ? ?%中值濾波 threshold = graythresh(shiyan3_filter); %用最大類間方差法找到閾值 shiyan3_seg = im2bw(shiyan3_filter,threshold); ?%閾值分割 axes(handles.axes1); imshow(shiyan3); title('原圖'); axes(handles.axes2); imshow(shiyan3_filter); title('中值濾波'); axes(handles.axes3); imshow(shiyan3_seg); title('類間方差閾值分割'); se = strel('disk',1); ?%結(jié)構(gòu)元素 shiyan3_erode1 = imerode(shiyan3_seg,se); ? %腐蝕 axes(handles.axes4); imshow(shiyan3_erode1); title('腐蝕: r=1'); se = strel('diamond',8); shiyan3_erode2 = imerode(shiyan3_seg,se); axes(handles.axes5); imshow(shiyan3_erode2); title('腐蝕: r=8'); se = strel('disk',8); shiyan3_erode3 = imerode(shiyan3_seg,se); axes(handles.axes6); imshow(shiyan3_erode3); title('腐蝕: r=8'); % --- 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) shiyan3 = rgb2gray(imread('shiyan3.bmp')); size_filter_m = str2double(get(handles.edit1,'string')); size_filter_n = str2double(get(handles.edit2,'string')); if isnan(size_filter_m) ? ?size_filter_m = 3; end if isnan(size_filter_n) ? ?size_filter_n = 3; end

三、運行結(jié)果

在這里插入圖片描述

?


【圖像分割】基于類間方差閾值圖像分割與腐蝕膨脹matlab源碼的評論 (共 條)

分享到微博請遵守國家法律
邯郸市| 互助| 鄂托克旗| 冷水江市| 镇康县| 会东县| 平昌县| 沅江市| 平潭县| 通化市| 泽普县| 托里县| 永和县| 西昌市| 连云港市| 五家渠市| 文水县| 南部县| 青浦区| 清水河县| 分宜县| 维西| 昭通市| 浦江县| 麟游县| 东台市| 礼泉县| 米林县| 舒兰市| 湖北省| 桑日县| 沙雅县| 重庆市| 吉木萨尔县| 化隆| 许昌县| 二连浩特市| 巴塘县| 即墨市| 衡阳县| 奇台县|