【影象分割】基於matlab GUI影象提取【含Matlab原始碼 702期】
阿新 • • 發佈:2021-06-21
一、簡介
基於matlab GUI影象提取
二、原始碼
function varargout = go(varargin) % GO M-file for go.fig % GO, by itself, creates a new GO or raises the existing % singleton*. % % H = GO returns the handle to a new GO or the handle to % the existing singleton*. % % GO('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GO.M with the given input arguments. % % GO('Property','Value',...) creates a new GO or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before go_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to go_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 go % Last Modified by GUIDE v2.5 30-Dec-2011 13:41:52 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @go_OpeningFcn, ... 'gui_OutputFcn', @go_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 go is made visible. function go_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 go (see VARARGIN) % Choose default command line output for go handles.output = hObject; handles.image=[]; % Update handles structure guidata(hObject, handles); % UIWAIT makes go wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = go_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; % --- 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) msgbox({'無94 勾志君 2009012870 ','無94 趙文騰 2009012055','無94 李炳霖 2009011086'},'製作資訊','help'); % --- Executes on selection change in listbox1. function listbox1_Callback(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox1 % --- Executes during object creation, after setting all properties. function listbox1_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox 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 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) index=get(handles.listbox1,'Value'); switch index case 1 handles.image=imread(strcat('imag\','b.jpg')); case 2 handles.image=imread(strcat('imag\','c.jpg')); case 3 handles.image=imread(strcat('imag\','d.jpg')); case 4 handles.image=imread(strcat('imag\','e.jpg')); end axes(handles.axes1); imshow(handles.image); set(handles.text9,'String','0s'); guidata(hObject,handles); % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) t_begin=clock; src=handles.image; [height,width,~]=size(src); if(height*width<4e+5)scale=4; else scale=8; end temp=mod(width,scale);width=width-temp; temp=mod(height,scale);height=height-temp; w=width/scale;h=height/scale; r=double(src(1:height,1:width,1));g=double(src(1:height,1:width,2));b=double(src(1:height,1:width,3)); ravrg=zeros(h,w);%分塊均值陣紅 gavrg=zeros(h,w);%分塊均值陣綠 bavrg=zeros(h,w);%分塊均值陣藍 color=zeros(h,w);%分塊顏色陣 colorscale=0;%顏色空間大小 largestscale=100;%最大顏色空間大小 eps=32;%顏色差別閾值 step=9;%濾波視窗 colorspace=repmat([r(1,1),g(1,1),b(1,1),0],largestscale,1);colorscale=1; for countw=1:w for counth=1:h ravrg(counth,countw)=mean(mean(r(counth*scale-(scale-1):counth*scale,countw*scale-(scale-1):countw*scale))); gavrg(counth,countw)=mean(mean(g(counth*scale-(scale-1):counth*scale,countw*scale-(scale-1):countw*scale))); bavrg(counth,countw)=mean(mean(b(counth*scale-(scale-1):counth*scale,countw*scale-(scale-1):countw*scale))); for count3=1:colorscale if( all(abs([ravrg(counth,countw)-colorspace(count3,1),gavrg(counth,countw)-colorspace(count3,2),... bavrg(counth,countw)-colorspace(count3,3)])<eps) )%和已有顏色相近 color(counth,countw)=count3;colorspace(count3,4)=colorspace(count3,4)+1;break; else if(colorscale==count3 &&colorscale<largestscale)%與已有顏色不同,增添新顏色 colorscale=colorscale+1;colorspace(count3+1,:)=[ravrg(counth,countw),gavrg(counth,countw),bavrg(counth,countw),1]; color(counth,countw)=count3+1;break; end end end end end delta=0.005; temp=1:colorscale; colorarray=temp(colorspace(:,4)>delta*h*w);%取有效顏色 ratio=zeros(length(colorarray),25); %開窗 hh=floor(h/8);ww=floor(w/8);j=1; for counth=ceil(0.0375*h):ceil(h/5):h+1-hh for countw=ceil(0.0375*w):ceil(w/5):w+1-ww for i=1:length(colorarray) ratio(i,j)=sum(sum(color(counth:counth+hh-1,countw:countw+ww-1)==colorarray(i))); end j=j+1; end end H=[-2,-1,-0.5,-1,-2; -1,0,1.5,0,-1; -0.5,1.5,1.5,1.5,-0.5; -1,0,1.5,0,-1; -2,-1,-0.5,-1,-2;]; H=reshape(H,25,1); result=ratio*H./colorspace(colorarray,4); %epsrslt=max(0.6*max(result)+0.4*min(result),mean(result));%mean([mean(result(result<0)),mean(result(result>0))]); epsrslt=min(0.7*max(result)+0.3*min(result),0.1); result=colorarray(result>epsrslt); enable=zeros(1,colorscale); for i=1:length(result) enable(result(i))=1; end
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加1564658423