第一篇:MATLAB中GUI在圖像處理應(yīng)用中的設(shè)計(jì)(包括各種算法)
用MATLAB 進(jìn)行圖像處理算法的界面設(shè)計(jì) /
目錄
1.設(shè)計(jì)目的???????????????????3 2.題目分析???????????????????3 3.總體設(shè)計(jì)???????????????????3 4.具體設(shè)計(jì)???????????????????5 5.結(jié)果分析???????????????????34 6.心得體會(huì)???????????????????34 7.附錄代碼???????????????????36
/ 52
1、設(shè)計(jì)目的:綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì),利用MATLAB圖像處理工具箱,設(shè)計(jì)和實(shí)現(xiàn)自己的Photoshop。
2、題目分析
利用matlab的GUI程序設(shè)計(jì)一個(gè)簡(jiǎn)單實(shí)用的圖像處理程序。該程序應(yīng)具備圖像處理的常用功能,以滿(mǎn)足用戶(hù)的使用。現(xiàn)設(shè)計(jì)程序有以下基本功能: 1)圖像的讀取和保存。
2)設(shè)計(jì)圖形用戶(hù)界面,讓用戶(hù)能夠?qū)D像進(jìn)行任意的亮度和對(duì)比度變化調(diào)整,顯示和對(duì)比變換前后的圖像。
3)設(shè)計(jì)圖形用戶(hù)界面,讓用戶(hù)能夠用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。
4)編寫(xiě)程序通過(guò)最近鄰插值和雙線(xiàn)性插值等算法將用戶(hù)所選取的圖像區(qū)域進(jìn)行放大和縮小整數(shù)倍的操作,并保存,比較幾種插值的效果。
5)圖像直方圖統(tǒng)計(jì)和直方圖均衡,要求顯示直方圖統(tǒng)計(jì),比較直方圖均衡后的效果。
6)能對(duì)圖像加入各種噪聲,并通過(guò)幾種濾波算法實(shí)現(xiàn)去噪并顯示結(jié)果。7)額外功能。
3、總體設(shè)計(jì)
/ 52 圖一
軟件的總體設(shè)計(jì)界面布局如上圖所示,主要分為2個(gè)部分:顯示區(qū)域與操作區(qū)域。顯示區(qū)域:顯示載入原圖,以及通過(guò)處理后的圖像。操作區(qū)域:通過(guò)功能鍵實(shí)現(xiàn)對(duì)圖像的各種處理。
在截圖中可見(jiàn),左部為一系列功能按鍵如“還原”、“撤銷(xiāo)”、“截圖”等等 ;界面正中部分為圖片顯示部分,界面中下方為系列功能切換選擇組。設(shè)計(jì)完成后運(yùn)行的軟件界面如下:
圖二
與圖一先比,運(yùn)行后的界面更為簡(jiǎn)潔。利用“編輯”菜單可調(diào)出相應(yīng)的功能鍵。例如:
/ 52
4、具體設(shè)計(jì)
現(xiàn)介紹各個(gè)功能模塊的功能與實(shí)現(xiàn)。4.1菜單欄的設(shè)計(jì)。通過(guò)Menu Editor
創(chuàng)建如下菜單,通過(guò)以下菜單來(lái)控制顯示或隱藏功能按鍵
以“編輯”菜單中“圖像變形”中的“圖像翻轉(zhuǎn)”為例說(shuō)明實(shí)現(xiàn)用戶(hù)界面功能鍵“圖像翻轉(zhuǎn)”的顯示與隱藏。實(shí)現(xiàn)該功能的程序段如下:
function tuxiangfanzhuan_Callback(hObject, eventdata, handles)% hObject handle to tuxiangfanzhuan(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像');if isequal(filename,0)|isequal(pathname,0)errordlg('沒(méi)有選中文件','出錯(cuò)');return;else
file=[pathname,filename];global S %設(shè)置一個(gè)全局變量S,保存初始圖像路徑,以便之后的還原操作 S=file;x=imread(file);set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1);imshow(x);set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);imshow(x);handles.img=x;guidata(hObject,handles);end
程序關(guān)鍵部分:
通過(guò)[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像')選擇相應(yīng)路徑打開(kāi)的圖像;通過(guò)file=[pathname,filename];x=imread(file);讀取選中的圖像;最后,通過(guò)imshow(x)在顯示區(qū)域上顯示圖像。
/ 52
(2)圖像保存。
利用“uiputfile”、“imwrite”函數(shù)實(shí)現(xiàn)圖像文件的保存。
function save_Callback(hObject, eventdata, handles)% hObject handle to save(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)clc;close all;close(gcf);clear;
4.3對(duì)圖像進(jìn)行任意的亮度和對(duì)比度變化調(diào)整,顯示和對(duì)比變換前后的圖像。
運(yùn)行程序后,通過(guò)“編輯”菜單中的“常用處理”選中“亮度調(diào)節(jié)”
在顯示出相應(yīng)的功能鍵后,通過(guò)載入讀取圖像,比并進(jìn)行處理,效果如下: 亮度處理前:
/ 52
亮度處理后:
實(shí)現(xiàn)程序段如下:
%---Executes on button press in radiobutton12.function radiobutton12_Callback(hObject, eventdata, handles)% hObject handle to radiobutton12(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T str=get(hObject,'string');axes(handles.axes2);
switch str case'增強(qiáng)' T=getimage;prompt={'輸入?yún)?shù):'};defans={'1'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=immultiply(handles.img,p1);imshow(f);handles.img=f;guidata(hObject,handles);case'減弱' T=getimage;prompt={'輸入?yún)?shù):'};defans={'1'};12 / 52 p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imdivide(handles.img,p1);imshow(f);handles.img=f;guidata(hObject,handles);end
該程序段主要通過(guò) f=immultiply(handles.img,p1);p=inputdlg(prompt,'input',1,defans);分別實(shí)現(xiàn)圖像對(duì)比度的增強(qiáng)與減弱。
4.4 用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。
通過(guò)imcrop(x)函數(shù)來(lái)實(shí)現(xiàn)對(duì)圖片某一區(qū)域的截取,截取的圖片在右框中顯示。結(jié)合“保存為?”,可把截圖處理后的圖片保存在指定路徑。
實(shí)現(xiàn)程序段如下:
%---Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
% Hint: get(hObject,'Value')returns toggle state of radiobutton16
global T axes(handles.axes2);14 / 52 T=getimage;x=rgb2gray(handles.img);%RGBí???×a???a?ò?èí??? imshow(x);handles.img=x;guidata(hObject,handles);
4.6對(duì)圖像進(jìn)行放大和縮小整數(shù)倍的操作。
通過(guò)imresize(X,n,mode)函數(shù)對(duì)圖像X進(jìn)行放大或者縮小。N放大縮小倍數(shù),mode為采用的方式。
通過(guò)處理后可發(fā)現(xiàn)保存的圖片的比原圖放大了(縮小了)。實(shí)現(xiàn)的程序段如下:
function uipanel9_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel9(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T axes(handles.axes2);T=getimage;h=histeq(handles.img);imshow(h);handles.img=h;guidata(hObject,handles);關(guān)鍵部分:通過(guò) h=histeq(handles.img)進(jìn)行直方圖均衡(2)直方圖統(tǒng)計(jì)。通過(guò)利用imhist(X)函數(shù)來(lái)實(shí)現(xiàn)直方圖統(tǒng)計(jì)。
/ 52
%---Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T str=get(hObject,'string');axes(handles.axes2);switch str case '椒鹽噪聲' T=getimage;prompt={'數(shù)日椒鹽噪聲參數(shù)1:'};defans={'0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imnoise(handles.img,'salt & pepper',p1);imshow(f);handles.img=f;guidata(hObject,handles);case '?高斯噪聲' T=getimage;prompt={'輸入高斯噪聲1:','輸入高斯噪聲2'};defans={'0','0.02'};21 / 52 p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});p2=str2num(p{2});f=imnoise(handles.img,'gaussian',p1,p2);imshow(f);handles.img=f;guidata(hObject,handles);case '乘性噪聲' T=getimage;prompt={'輸入乘性噪聲1:'};defans={'0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imnoise(handles.img,'speckle',p1);imshow(f);handles.img=f;guidata(hObject,handles);end
(2)濾除噪聲(椒鹽噪聲)。濾波前
中值濾波后
/ 52
線(xiàn)性濾波后
自適應(yīng)濾波后
實(shí)現(xiàn)程序段如下:
function uipanel5_SelectionChangeFcn(hObject, eventdata, handles)%圖像濾波
% hObject handle to uipanel5(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
axes(handles.axes2);y1=handles.img;f=double(y1);% 數(shù)據(jù)類(lèi)型轉(zhuǎn)換,matlab不支持圖像的無(wú)符號(hào)整型的計(jì)算 g=fft2(f);% 傅里葉變換 g=fftshift(g);% 轉(zhuǎn)換數(shù)據(jù)矩陣 [M,N]=size(g);nn=2;%二階巴特沃斯低通濾波器 d0=50;%截止頻率50 m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));% 計(jì)算低通濾波器傳遞函數(shù) result(i,j)=h*g(i,j);end
/ 52 end
result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);% 顯示處理后的圖像
%---Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles)% hObject handle to pushbutton15(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
global S %還原 axes(handles.axes2);y=imread(S);f=imshow(y);handles.img=y;guidata(hObject,handles);4.10 撤銷(xiāo)。
撤銷(xiāo)上一步的操作。通過(guò)另設(shè)一個(gè)全局變量T保存是上一次操作后的圖像。
/ 52 實(shí)現(xiàn)程序段如下:
---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)str=get(hObject,'string');axes(handles.axes2);global T switch str case '左右翻轉(zhuǎn)' T=handles.img;f=fliplr(handles.img);imshow(f);handles.img=f;guidata(hObject,handles);case '上下翻轉(zhuǎn)' T=handles.img;f=flipud(handles.img);imshow(f);handles.img=f;guidata(hObject,handles);29 / 52 end
程序關(guān)鍵部分:通過(guò)f=fliplr(handles.img);f=flipud(handles.img);分別實(shí)現(xiàn)左右鏡像翻轉(zhuǎn)與上下鏡像翻轉(zhuǎn)。
(2)圖像旋轉(zhuǎn)。
實(shí)現(xiàn)圖像的逆時(shí)針旋轉(zhuǎn)任意角度。
實(shí)現(xiàn)程序段如下:
function pushbutton3_Callback(hObject, eventdata, handles)%圖像愛(ài)那個(gè)旋轉(zhuǎn)
% hObject handle to pushbutton3(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T axes(handles.axes2);T=getimage;f=imcomplement(handles.img);%圖像取反′
/ 52 imshow(f);handles.img=f;guidata(hObject,handles);
程序段關(guān)鍵部分:通過(guò)f=imcomplement(handles.img);實(shí)現(xiàn)圖像取反,形成底片效果。
(2)邊緣信息。采取圖像的邊緣信息。
實(shí)現(xiàn)程序段如下:
%---Executes on button press in pushbutton16.function pushbutton16_Callback(hObject, eventdata, handles)% hObject handle to pushbutton16(see GCBO)
% eventdata reservedDO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @tuxiangchuli_OpeningFcn,...'gui_OutputFcn', @tuxiangchuli_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 codeto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)% varargin command line arguments to tuxiangchuli(see VARARGIN)
% Choose default command line output for tuxiangchuli handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes tuxiangchuli wait for user response(see UIRESUME)% uiwait(handles.figure1);
%---Outputs from this function are returned to the command line.function varargout = tuxiangchuli_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args(see VARARGOUT);% hObject handle to figure
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%------function exit_Callback(hObject, eventdata, handles)% hObject handle to exit(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'??è?í???');if isequal(filename,0)|isequal(pathname,0)errordlg('??óD???D???t','3?′í');
return;else
file=[pathname,filename];
global S %éè??ò???è???a?á?S£?a£′?3?ê?í???????£?ò?a???oóμ??1?-2ù?? S=file;
x=imread(file);
set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1);imshow(x);
set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);imshow(x);handles.img=x;
guidata(hObject,handles);end
%------function about_Callback(hObject, eventdata, handles)% hObject handle to about(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%------function save_Callback(hObject, eventdata, handles)% hObject handle to save(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
% Hint: get(hObject,'Value')returns toggle state of radiobutton12 global T
axes(handles.axes2);T=getimage;prompt={'μ???a?êy'};defans={'1'};
p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});
y=imadjust(handles.img,[ ], [ ],p1);%??ááí??? imshow(y);handles.img=y;
guidata(hObject,handles);
%------function uipanel4_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel4(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
% Hint: get(hObject,'Value')returns toggle state of radiobutton16
global T
axes(handles.axes2);T=getimage;
x=rgb2gray(handles.img);%RGBí????a???a?ò?èí??? imshow(x);handles.img=x;
guidata(hObject,handles);
/ 52 %---Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T
axes(handles.axes2);T=getimage;prompt={'Dy?a???è:'};defans={'0'};
p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});
f=imrotate(handles.img,p1,'bilinear','crop');imshow(f);handles.img=f;
guidata(hObject,handles);
% Hint: popupmenu 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
/ 52
%------function uipanel5_SelectionChangeFcn(hObject, eventdata, handles)%í?????2¨ % hObject handle to uipanel5(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)str=get(hObject,'string');
/ 52 axes(handles.axes2);global T switch str
case '?óóò?-?a'
T=handles.img;
f=fliplr(handles.img);imshow(f);handles.img=f;
guidata(hObject,handles);
case 'é????-?a' T=handles.img;
f=flipud(handles.img);imshow(f);handles.img=f;
guidata(hObject,handles);end
%---Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)axes(handles.axes2);
x=imhist(handles.img);%?a??í?í3?? x1=x(1:10:256);horz=1:10:256;bar(horz,x1);
axis([0 255 0 15000]);
set(handles.axes2,'xtick',0:50:255);set(handles.axes2,'ytick',0:2000:15000);
/ 52
%------function uipanel9_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel9(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
global S %?1?-1|?ü axes(handles.axes2);y=imread(S);f=imshow(y);handles.img=y;
guidata(hObject,handles);
/ 52
%---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T
str=get(hObject,'string');axes(handles.axes2);
switch str
case'????'
T=getimage;prompt={'ê?è?2?êy:'};defans={'1'};
p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});
f=immultiply(handles.img,p1);imshow(f);handles.img=f;
guidata(hObject,handles);
case'??è?' T=getimage;prompt={'ê?è?2?êy:'};defans={'1'};
p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});
f=imdivide(handles.img,p1);imshow(f);handles.img=f;
guidata(hObject,handles);end
/ 52 %---Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)% hObject handle to pushbutton12(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
axes(handles.axes2);y1=handles.img;
f=double(y1);% êy?Yà-Dí?a??£?MATLAB2??§3?í???μ??T??o???Díμ????? g=fft2(f);% ?μá¢ò?a??? g=fftshift(g);% ?a??êy?Y???ó [M,N]=size(g);
nn=2;% ?t???íì????1(Butterworth)μíí¨??2¨?? d0=50;%???1?μ?ê?a50 m=fix(M/2);n=fix(N/2);for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));% ????μíí¨??2¨??′?μYoˉêy result(i,j)=h*g(i,j);
end end
result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));
imshow(y3);% ??ê???2¨′|àíoóμ?í???
/ 52 %---Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles)% hObject handle to pushbutton15(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global T
axes(handles.axes2);T=getimage;
f=edge(handles.img,'canny');imshow(f);handles.img=f;
guidata(hObject,handles);
/ 52
%------function edit_Callback(hObject, eventdata, handles)% hObject handle to edit(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%------function tianjiazaosheng_Callback(hObject, eventdata, handles)% hObject handle to tianjiazaosheng(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%------function changyongchuli_Callback(hObject, eventdata, handles)% hObject handle to changyongchuli(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%------function tuxiangfanzhuan_Callback(hObject, eventdata, handles)% hObject handle to tuxiangfanzhuan(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.pushbutton3,'Visible','on');if strcmp(get(gcbo, 'Checked'),'on')
set(handles.pushbutton3,'Visible','on');set(gcbo, 'Checked', 'off');
set(handles.pushbutton3,'Visible','off');else
set(gcbo, 'Checked', 'on');end
%------function ditonglvbochuli_Callback(hObject, eventdata, handles)% hObject handle to ditonglvbochuli(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.pushbutton15,'Visible','on');if strcmp(get(gcbo, 'Checked'),'on')
set(handles.pushbutton15,'Visible','on');set(gcbo, 'Checked', 'off');
set(handles.pushbutton15,'Visible','off');else
set(gcbo, 'Checked', 'on');end
%------function tuxianglvbo_Callback(hObject, eventdata, handles)% hObject handle to tuxianglvbo(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.radiobutton12,'Visible','on');if strcmp(get(gcbo, 'Checked'),'on')
set(handles.radiobutton12,'Visible','on');set(gcbo, 'Checked', 'off');
set(handles.radiobutton12,'Visible','off');else
set(gcbo, 'Checked', 'on');end
/ 52
%------function huidutxiang_Callback(hObject, eventdata, handles)% hObject handle to huidutxiang(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.uipanel10,'Visible','on');if strcmp(get(gcbo, 'Checked'),'on')
set(handles.uipanel10,'Visible','on');set(gcbo, 'Checked', 'off');
set(handles.uipanel10,'Visible','off');else
set(gcbo, 'Checked', 'on');end
%------function zhifangtujunheng_Callback(hObject, eventdata, handles)% hObject handle to zhifangtujunheng(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.pushbutton8,'Visible','on');
/ 52
第二篇:Matlab在控制工程中的應(yīng)用
Matlab在控制工程中的應(yīng)用
摘要:
簡(jiǎn)要介紹MATLAB軟件及其控制系統(tǒng)工具箱的功能,并通過(guò)具體實(shí)例說(shuō)明MATLAB軟件在《機(jī)械控制工程基礎(chǔ)》課程教學(xué)中的優(yōu)越性,從多方面探討在教學(xué)過(guò)程中,如何更好地利用MATLAB軟件.主要從系統(tǒng)的時(shí)間響應(yīng)及頻率特性、穩(wěn)定性分析和系統(tǒng)校正的設(shè)計(jì)、線(xiàn)性離散系統(tǒng)的分析及系統(tǒng)模型的估計(jì)等方面使MATLAB得圖形化和交換功能充分的體現(xiàn)了出來(lái),使抽象復(fù)雜的理論變得生動(dòng)形象、加深了對(duì)某些概念的理解、激發(fā)了我們的學(xué)習(xí)興趣。最后總結(jié)了關(guān)于怎樣學(xué)好MATLAB的心得體會(huì)。
1.MATLAB簡(jiǎn)介
MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱(chēng),是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。到目前為止,已經(jīng)經(jīng)發(fā)展成為優(yōu)秀的適合多學(xué)科的功能強(qiáng)大的科技應(yīng)用軟件之一,在30多個(gè)面向不同領(lǐng)域而擴(kuò)展的工具箱的支持下,MATLAB在許多領(lǐng)域中成為計(jì)算機(jī)輔助設(shè)計(jì)與分析、算法研究和應(yīng)用開(kāi)發(fā)的基本工具和首選平臺(tái)。
MATLAB的發(fā)展經(jīng)歷了以下幾個(gè)重要的發(fā)展時(shí)期:
1)20世紀(jì)70年代后期,時(shí)任美國(guó)新墨西哥大學(xué)計(jì)算機(jī)科學(xué)系主任的Cleve?Moler教授為學(xué)生開(kāi)發(fā)了矩陣特征值求解及線(xiàn)性方程求解的FORTRAN程序庫(kù)及接口程序,取名為MATLAB,并開(kāi)始流傳。
2)1983年春,Cleve?Moler博士與John?Little等人用c語(yǔ)言開(kāi)發(fā)了MATLAB的第二代專(zhuān)業(yè)版,具有數(shù)值計(jì)算及數(shù)據(jù)圖形化功能。3)1984年,Cleve?Moler與John?Little成立了MathWorks公司,正式把MATLAB推向市場(chǎng)。4)1993年~1995年,MathWorks公司推出了MATLAB?4.0版,充分支持Microsoft?Win—dows下的界面編程,1995年推出4.2C版。
5)1997年,MathWorks公司推出了MATLAB?5.0版,支持更多的數(shù)據(jù)結(jié)構(gòu),無(wú)論界面還是功能都較4.x版有長(zhǎng)足進(jìn)展。1999年推出了5.3版,進(jìn)一步改善了MATLAB的功能。
6)2000年10月,MathWorks公司推出了MATLAB?6.0版,該版的推出是MATLAB軟件的一次飛躍,它的可視化界面煥然一新,風(fēng)格更加平易近人,而且還添加了對(duì)JAVA的支持,函數(shù)庫(kù)也進(jìn)一步進(jìn)行了擴(kuò)充,運(yùn)算速度更快、性能更好。2001年6月,MathWorks公司推出了MATLAB?6.1版。2002年8月,MathWorks公司推出了MATLAB?6.5版。
2.MATLAB與控制工程及實(shí)例說(shuō)明
Nyquist圖和Bode圖是系統(tǒng)頻率特性的兩種重要的圖形表示形式,也是對(duì)系統(tǒng)進(jìn)行頻率特性分析的重要方法。無(wú)論是Nyquist圖還是Bode圖,都非常適于用計(jì)算機(jī)進(jìn)行繪制,Matlab提供了繪制系統(tǒng)頻率特性極坐標(biāo)圖的nyquist函數(shù)和繪制對(duì)數(shù)坐標(biāo)圖的bode函數(shù)。
24(0.25s+0.5)例如:傳遞函數(shù)為G(s)=的系統(tǒng)的Nyquist圖及Bode圖的求取。
(5s+2)(0.05s+2)1)Matlab文本及Nquist圖形如下:
k=24,nunG1=k*[0.25,0.5];denG1=conv([5 2],[0.05 2]);[re,im]=nyquist(nunG1,denG1);plot(re,im);grid k=24,nunG1=k*[0.25,0.5];denG1=conv([5 2],[0.05 2]);[re,im]=nyquist(nunG1,denG1);plot(re,im);grid
0-0.2-0.4-0.6-0.8-1-1.2-1.400.511.522.53
2)Matlab文本及Bode圖如下:
k=24;numG1=k*[0.25 0.5];denG1=conv([5 2],[0.05 2]);w=logspace(-2,3,100);bode(numG1,denG1,w);
Bode Diagram100Magnitude(dB)Phase(deg)-10-20-30-400-45-9010-210-1100101102103Frequency(rad/sec)
在MATLAB中,可以用impulse函數(shù)、step函數(shù)和lsim函數(shù)對(duì)線(xiàn)性連續(xù)系統(tǒng)的時(shí)間響應(yīng)進(jìn)行仿真計(jì)算。其中impulse函數(shù)用于生成單位脈沖響應(yīng);step函數(shù)用于生成單位階躍響應(yīng);lsim函數(shù)用于生成對(duì)任意輸入的時(shí)間響應(yīng)。
例如:已知某高階系統(tǒng)的傳遞函數(shù)為
2S2?20S?50G(S)?6 S?15S5?84S4?223S3?309S2?240S?100
求該系統(tǒng)的單位脈沖響應(yīng)、單位階躍響應(yīng)和單位速度響應(yīng)和單位加速度響應(yīng)。
獲得單位脈沖響應(yīng)程序語(yǔ)句及圖形: >> num=[2 20 50];>> den=[1 15 84 223 309 240 100];>> impulse(num,den)
獲得單位階躍響應(yīng)程序語(yǔ)句及圖形: >> num=[2 20 50];>> den=[1 15 84 223 309 240 100];>> step(num,den)
獲得單位速度響應(yīng)程序語(yǔ)句及圖形: >> num=[2 20 50];>> den=[1 15 84 223 309 240 100];>> t=[0:0.01:1];>> u=(t);>> lsim(num,den,u,t)
獲得單位加速度響應(yīng)程序語(yǔ)句及圖形: > num=[2 20 50];>> den=[1 15 84 223 309 240 100];>> t=[0:0.01:1];>> u=(0.5*t.*t);>> lsim(num,den,u,t)
3,總結(jié): MATLAB其實(shí)很簡(jiǎn)單,只有自己親自思考,多動(dòng)手,不怕失敗,我們才能好真正的掌握這門(mén)技術(shù).其實(shí)我們學(xué)習(xí)Matlab的時(shí)候不要試著掌握它的每一個(gè)功能,熟悉和你專(zhuān)業(yè)最相關(guān)的部分就可以了.另外我感覺(jué)在MATLAB很好玩,從剛開(kāi)始的什么都不懂到最后自己寫(xiě)程序并且到處相應(yīng)的結(jié)果,真的是一件很開(kāi)始的事情.所以說(shuō)這次學(xué)到了很多有用的東西.
第三篇:PHOTOSHOP圖像處理在刑事物證中的應(yīng)用
摘 要:隨著科技的不斷進(jìn)步,數(shù)字技術(shù)得到廣泛的發(fā)展和應(yīng)用,現(xiàn)實(shí)生活中的很多信息都可以以數(shù)字形式的數(shù)據(jù)進(jìn)行處理和儲(chǔ)存,數(shù)字圖像就是這種以數(shù)字形式進(jìn)行儲(chǔ)存和處理的圖像。
關(guān)鍵詞:物證檢驗(yàn);應(yīng)用
隨著科技的不斷進(jìn)步,數(shù)字技術(shù)得到廣泛的發(fā)展和應(yīng)用,現(xiàn)實(shí)生活中的很多信息都可以以數(shù)字形式的數(shù)據(jù)進(jìn)行處理和儲(chǔ)存,數(shù)字圖像就是這種以數(shù)字形式進(jìn)行儲(chǔ)存和處理的圖像。利用photoshop 等圖像處理軟件可以對(duì)數(shù)碼案件照片進(jìn)行后期的編排和處理,輕松地將數(shù)碼痕跡圖像處理為所需用比例物證檢驗(yàn)照片;將數(shù)碼照相技術(shù)與指紋自動(dòng)識(shí)別系統(tǒng)相連接,可使數(shù)碼指紋照片直接進(jìn)入指紋自動(dòng)識(shí)別系統(tǒng)中進(jìn)行校驗(yàn)比對(duì),迅速鎖定作案嫌疑人。大大減輕了刑事技術(shù)人員的工作量和工作時(shí)間,為偵查破案爭(zhēng)取了寶貴的時(shí)間。
數(shù)字圖像在近幾年發(fā)展以及在公安工作中的應(yīng)用
數(shù)字圖像是在刑事物證中是一種視聽(tīng)資料,在1997年的刑事訴訟法修改后,視聽(tīng)資料被列為一種獨(dú)立的證據(jù)使用。在下文中所指的數(shù)字圖像是指借助現(xiàn)代化精密儀器(如數(shù)字相機(jī)、數(shù)字?jǐn)z像機(jī)、計(jì)算機(jī))所提供的信息資料,它與視聽(tīng)資料中的錄像資料相比較,其表現(xiàn)形式只是單幅圖像和多幅連續(xù)圖像之別,兩者只是表現(xiàn)形式不同,其本質(zhì)是一樣的。作為現(xiàn)在化公安工作的發(fā)展,數(shù)字圖像在公安的基層辦公中越來(lái)越多地被應(yīng)用。其優(yōu)點(diǎn)在于對(duì)用數(shù)碼相機(jī)拍攝犯罪現(xiàn)場(chǎng)照片,在拍攝時(shí)可以邊拍攝邊察看,不滿(mǎn)意的照片可以當(dāng)場(chǎng)刪除進(jìn)行修改。還方便與保存、記錄以及日后的分析案情等等。在物證中,而使用數(shù)碼技術(shù)可隨時(shí)察看影像質(zhì)量,根據(jù)需要改變拍照條件并及時(shí)做出調(diào)整,大大縮短了照片的制作周期,使痕跡物證得到及時(shí)地檢驗(yàn)和鑒定。利用數(shù)字技術(shù)還可以為痕跡物證照相設(shè)定拍照比例,在計(jì)算機(jī)上測(cè)定痕跡物證的大小、深淺以及特征點(diǎn)之間的方位、距離,把得到的數(shù)據(jù)與樣本進(jìn)行比較,做出科學(xué)的鑒定結(jié)論。并且能對(duì)照片質(zhì)量進(jìn)行優(yōu)化,模糊的經(jīng)過(guò)處理可提高清晰度,反差小的經(jīng)過(guò)影調(diào)調(diào)整可提高反差,有彩色背景的痕跡可以改變背景的顏色使痕跡清晰可見(jiàn),達(dá)到分色照相的目的。對(duì)于刑事物證中由于客觀的因素,導(dǎo)致的物證、人犯、痕跡的模糊變形,造成圖像不容易辨認(rèn)、認(rèn)定時(shí),還可以利用數(shù)字技術(shù)進(jìn)行修改阻礙辨認(rèn)的像素,是照片帶到相應(yīng)的要求。說(shuō)到數(shù)字技術(shù),現(xiàn)在應(yīng)用較為廣泛的就是photoshop軟件了。
photoshop軟件在刑事物證中的應(yīng)用實(shí)例
photoshop軟件是abode公司開(kāi)發(fā)的圖像處理軟件,在我們?nèi)粘5膱D像處理中應(yīng)用非常的廣泛,其對(duì)圖像的處理功能非常的強(qiáng)大,可以處理各種圖像問(wèn)題。適應(yīng)于公安刑事技術(shù)工作圖像的各個(gè)方面。本文所用到的photoshop版本photoshop cs3。
在日常文檢工作中,對(duì)痕跡特征、文件材料的檢驗(yàn),一般是借助尺子、放大鏡或者一些專(zhuān)業(yè)的輔助工具進(jìn)行檢驗(yàn)對(duì)比,這些工具無(wú)疑給我們的檢驗(yàn)工作帶來(lái)了很多的不方便,并且也存在許多不足之處:1)傳統(tǒng)的用眼觀察、手工測(cè)量不夠精確;2)用放大鏡、顯微鏡觀察時(shí),眼睛容易疲勞且只能觀察到很小的局部;3)檢驗(yàn)時(shí)所觀察到的情況固定困難(照相);4)傳統(tǒng)檢驗(yàn)方法比較單一。運(yùn)用photoshop借助電腦和掃描儀檢驗(yàn)印刷品和印文既操作方便、準(zhǔn)確、直觀,又便于對(duì)放大、處理過(guò)的材料打印固定,而且對(duì)檢材不會(huì)造成絲毫磨損、破壞。在應(yīng)用了photoshop軟件后,我們可以對(duì)痕跡特征、文件材料的檢材進(jìn)行局部的放大、將其中某一顏色圖案分離出來(lái)、進(jìn)行重疊比對(duì)檢驗(yàn)、增加圖文同底色(背景的)反差來(lái)提高所檢部位的清晰度、精確測(cè)量檢材的搭配比例特征。(文中所有的圖片格式為.psd 注:psd 文件為photoshop 的缺省文件格式,它可以將所編輯圖像的所有有關(guān)圖層、通道等信息記錄下來(lái)。)
選擇“圖像”,“模式”,再選中“cmyk 顏色”,然后點(diǎn)擊“通道”,鼠標(biāo)右擊“洋紅”通道,選擇“刪除通道”,接著鼠標(biāo)右擊“黃色”通道,選擇“刪除通道”命令,便可以達(dá)到去朱存墨的效果了。(如圖1 所示)選擇“圖像”,“模式”,再選中“l(fā)ab 顏色”,然后點(diǎn)擊“通道”,鼠標(biāo)右擊“明度”通道,選擇“刪除通道”命令,接著鼠標(biāo)右擊“b”通道,選擇“刪除通道”命令,便可以達(dá)到去墨存朱的效果了。(如圖2 所示)
我們?cè)跈z驗(yàn)指紋特征、文件材料中有時(shí)某個(gè)部位(局部)因?yàn)榕臄z或者其他的客觀原因造成圖文不夠清晰時(shí),我們可以在軟件中執(zhí)行“圖像/ 調(diào)整、曲線(xiàn)”命令,打開(kāi)“曲線(xiàn)”對(duì)話(huà)框,根據(jù)文件的模式,選擇“通道”類(lèi)型,通過(guò)調(diào)整曲線(xiàn)使圖像中某個(gè)部位反差增大,使整個(gè)圖文更加清晰。這種功能是一些專(zhuān)業(yè)比對(duì)儀所無(wú)法達(dá)到的。我們還可以通過(guò)調(diào)整色彩的平衡,使所選顏色的圖案更加突出。操作時(shí),執(zhí)行“圖像\\調(diào)整\\色彩平衡”命令,在“色彩平衡”對(duì)話(huà)框中,選擇“暗調(diào)”、“中間調(diào)”或“高光”中的一個(gè)著重進(jìn)行色調(diào)范圍的更改,通過(guò)調(diào)整標(biāo)注紅、綠、藍(lán)的顏色條上的三角形滑塊的位置調(diào)整色彩平衡,從而達(dá)到增強(qiáng)某一(幾)種顏色,減少“顏色輪”中相對(duì)應(yīng)的幾
(一)種顏色,使圖文同底色反差加大,使某種顏色的圖文更加清晰可見(jiàn)。如在檢驗(yàn)時(shí)出現(xiàn)印文同文字交叉情況,我們可用此方法隱去印文或文字,使文字或印文更清晰。
我們?cè)诤圹E檢驗(yàn)中,有時(shí)候會(huì)對(duì)檢材與樣本是否同一進(jìn)行利用重影也對(duì)接技術(shù)進(jìn)行比對(duì)。進(jìn)行比對(duì)時(shí),大都需要用一些專(zhuān)用的痕跡比對(duì)儀器,這些儀器不是每一個(gè)公安部門(mén)所能擁有的,但是,利用了photoshop技術(shù),可以處理一些簡(jiǎn)單數(shù)字圖像。下面我那痕跡檢驗(yàn)中的文件檢驗(yàn)來(lái)舉例:
重影比對(duì)。打開(kāi)樣本的圖像后,選中“圖層”調(diào)板,鼠標(biāo)右鍵單擊“背景”圖層,選擇“復(fù)制圖層”命令,將新圖層命名為“樣本一”圖層,保存文件,建立重影比對(duì)工作文件。打開(kāi)檢材文件,選擇“選擇(菜單)”、“全選(選項(xiàng))”、將樣本印文圖像全部選中。選擇“移動(dòng)工具”,將樣本印文選區(qū)拖至樣本圖像窗口,成為圖層1,關(guān)閉檢材文件窗口(釋放內(nèi)存)。將圖層1 重命名為“檢材”圖層,并將“模式選項(xiàng)”設(shè)為“正片疊底(模式)”。選擇“編輯、菜單”、“變換(選項(xiàng))”、選中“旋轉(zhuǎn)(子選項(xiàng))”。即可拖動(dòng)并旋轉(zhuǎn)檢材印文與樣本印文進(jìn)行重影比對(duì)檢驗(yàn)了(如圖4 所示)。比對(duì)完后別忘了保存文件。
第四篇:MATLAB在電磁場(chǎng)教學(xué)中的應(yīng)用
MATLAB在電磁場(chǎng)課程中的應(yīng)用
摘要:電磁場(chǎng)課程理論性強(qiáng),概念抽象,需要較強(qiáng)的多維空間想象能力和邏輯思維能力,不能直觀的進(jìn)行觀察和研究,難以很好地掌握。文中簡(jiǎn)要介紹了MATLAB語(yǔ)言的基本計(jì)算功能和畫(huà)圖功能,并對(duì)電磁場(chǎng)課程中的具體實(shí)例進(jìn)行了理論計(jì)算及可視化仿真,這樣不僅提高了計(jì)算速度,而且也進(jìn)一步加深了對(duì)電磁場(chǎng)空間物理現(xiàn)象的理解。關(guān)鍵詞:電磁場(chǎng);MATLAB;可視化 1 引言
電磁場(chǎng)理論是分析各種電磁現(xiàn)象的基本規(guī)律、應(yīng)用原理與應(yīng)用方法的技術(shù)基礎(chǔ)課,是培養(yǎng)合格的電氣信息類(lèi)專(zhuān)業(yè)本科生所應(yīng)具備的知識(shí)結(jié)構(gòu)的重要組成部分。公共基礎(chǔ)課(數(shù)學(xué)、物理等)側(cè)重于抽象問(wèn)題的分析與計(jì)算,而專(zhuān)業(yè)課又側(cè)重于工程實(shí)際中的應(yīng)用,電磁場(chǎng)則起到了承前啟后的作用,使學(xué)生們初步認(rèn)識(shí)各種電磁現(xiàn)象及電磁過(guò)程的物理本質(zhì)。掌握運(yùn)用多種數(shù)學(xué)工具解決電磁問(wèn)題的方法和技巧,為學(xué)生順利進(jìn)入專(zhuān)業(yè)課的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)[1]。
電磁場(chǎng)涉及內(nèi)容較廣,概念抽象,是空間與時(shí)間綜合性最強(qiáng)的課程之一。應(yīng)用的很多內(nèi)容在數(shù)學(xué)的教學(xué)中往往不是重點(diǎn)內(nèi)容,可在電磁場(chǎng)的教學(xué)中,這些內(nèi)容又是分析電磁現(xiàn)象的重要數(shù)學(xué)工具??梢?jiàn),對(duì)數(shù)學(xué)基礎(chǔ)薄弱的學(xué)生來(lái)說(shuō),“教”與“學(xué)”都感到非常困難。針對(duì)這種情況傳統(tǒng)的教學(xué)模式已經(jīng)逐漸不能適應(yīng)時(shí)代的發(fā)展的要求,因此在教學(xué)中積極采用現(xiàn)代化設(shè)備,通過(guò)高科技手段使學(xué)生能夠直接獲取知識(shí),成為自身學(xué)習(xí)及各個(gè)高校教學(xué)的熱點(diǎn)。而MATLAB具有強(qiáng)大的計(jì)算及繪圖能力,在電磁場(chǎng)教學(xué)中應(yīng)用非常廣泛。2 MATLAB特點(diǎn)及應(yīng)用
MATLAB是由美國(guó)MathWorks公司推出的一款優(yōu)秀的程序仿真開(kāi)發(fā)軟件。經(jīng)過(guò)多年的逐步發(fā)展與不斷完善,已經(jīng)成為國(guó)際公認(rèn)的最優(yōu)科學(xué)計(jì)算與數(shù)學(xué)應(yīng)用軟件之一。其內(nèi)容涉及矩陣代數(shù)、微積分、應(yīng)用數(shù)學(xué)、計(jì)算機(jī)圖形學(xué)、物理等很多方面。集計(jì)算、繪圖及聲音處理于一體,主要特點(diǎn)如下[2,3]:
(1)計(jì)算功能強(qiáng)大。能夠?qū)崿F(xiàn)數(shù)值與符號(hào)計(jì)算、計(jì)算結(jié)果與編程可視化、數(shù)字與文字的統(tǒng)一處理、離線(xiàn)與在線(xiàn)計(jì)算等,針對(duì)不同領(lǐng)域提供了豐富的工具箱,用戶(hù)還可以根據(jù)自己的需要任意擴(kuò)充函數(shù)工具庫(kù)。
(2)強(qiáng)大的繪圖功能。能夠?qū)崿F(xiàn)二維、三維圖形的繪制,可以從圖形直觀的衡量程序的效果。
(3)界面友好。效率高,編程簡(jiǎn)潔,MATLAB以矩陣為基本單元的可視化程序設(shè)計(jì)語(yǔ)言,指令表達(dá)和標(biāo)準(zhǔn)教材的數(shù)學(xué)表達(dá)式相近。
(4)簡(jiǎn)單易學(xué),特別適用于初學(xué)者,用戶(hù)可以在短時(shí)間內(nèi)掌握。
正是由于MATLAB強(qiáng)大的功能和廣泛的適用性,才得到了用戶(hù)的普遍認(rèn)可,在自動(dòng)控制、神經(jīng)網(wǎng)絡(luò)、信號(hào)處理等諸多方面,都有廣泛的應(yīng)用。3 應(yīng)用MATLAB實(shí)現(xiàn)電磁場(chǎng)計(jì)算
電磁場(chǎng)涉及數(shù)學(xué)知識(shí)很多,如:積分變換、矢量分析、場(chǎng)論等,也涉及到泛函分析、變分法、微分幾何、積分方程等方面的基礎(chǔ)知識(shí),在函數(shù)分析中變量是三維空間,甚至是在四維空間中討論電磁場(chǎng)的變化,變化量既有標(biāo)量又有矢量。這是電磁場(chǎng)課程不容易掌握的一個(gè)主要原因。而MATLAB幾乎可以解決科學(xué)計(jì)算的任何問(wèn)題。
應(yīng)用舉例一: 設(shè)單芯電纜有兩層絕緣體,分界面亦是同軸圓柱面,電纜上電荷體密度?=0.6c/cm,內(nèi)層絕緣體介電常數(shù)為2,外層絕緣體介電常數(shù)為3.8,內(nèi)導(dǎo)體絕緣體半徑為1cm,內(nèi)層絕緣半徑為3cm,外層絕緣體半徑為7cm,求內(nèi)導(dǎo)體與外殼導(dǎo)體之間的電壓U為多少?
解:在絕緣體中取任意點(diǎn)P,設(shè)P至O點(diǎn)的距離為p。過(guò)P點(diǎn)作同軸圓柱面,高為l,該面再加上下兩底面作為“高斯面S”。由于對(duì)稱(chēng),顯然D在上下底面上沒(méi)有法相分量,在同軸圓柱面上D是均勻的且沿半徑向外取向。應(yīng)用高斯定律得:
?D?dS?(2??l)D??l(1)
S3于是各層絕緣體中電場(chǎng)強(qiáng)度分別為
E1?D1??和E2?D2??(2)
?22??2??12??1?而電壓為U???2?E1d???3E2d?(3)?1?2程序如下:
m1=2;m2=3.8;t=0.6;p1=1;p2=3;p3=7;% m為介電常數(shù),t為線(xiàn)密度,p為半徑 E1=@(p)t./(2*pi*m1*p);%求內(nèi)層絕緣體場(chǎng)強(qiáng) E2=@(p)t./(2*pi*m2*p);%求外層絕緣體場(chǎng)強(qiáng) U3=quad(E1,p1,p2);%求內(nèi)層絕緣體電壓 U4=quad(E2,p2,p3);%求內(nèi)層絕緣體電壓 U=U3+U4;%求內(nèi)外導(dǎo)體之間電壓 程序運(yùn)行結(jié)果:
U = 0.0737 4 應(yīng)用MATLAB實(shí)現(xiàn)電磁場(chǎng)可視化
在電磁場(chǎng)場(chǎng)量分析中抽象思維程度很高,電磁場(chǎng)不同于一般物質(zhì)的五態(tài),沒(méi)有固定形態(tài)、沒(méi)有靜止質(zhì)量、沒(méi)有顏色,甚至沒(méi)有明確的大小邊界,很不容易直接感知,這也是電磁場(chǎng)課程不容易掌握的另一個(gè)主要原因。但如果采用 MATLAB 計(jì)算并繪圖,將電力線(xiàn)、等位線(xiàn)等用二維或三維圖形清晰展現(xiàn)出來(lái),學(xué)生的理解會(huì)更加直觀[4]。應(yīng)用舉例二:
平行雙線(xiàn)傳輸線(xiàn)可看做兩根單位帶電量分別是+?和-?的無(wú)限長(zhǎng)細(xì)圓柱或直線(xiàn),試畫(huà)出其電位分布。
解:已知線(xiàn)密度為?均勻分布的無(wú)限長(zhǎng)線(xiàn)電荷周?chē)碾妶?chǎng)為E??
2??0?由于線(xiàn)電荷無(wú)限長(zhǎng),零參考電位點(diǎn)不能取在無(wú)窮遠(yuǎn)點(diǎn),一般可任意指定某一位置?0為零參考點(diǎn),因此,單根線(xiàn)電荷的電位場(chǎng)為:
????0???d??ln0
?2??0?2??0?平行雙線(xiàn)的電位場(chǎng)是兩根單線(xiàn)的場(chǎng)的疊加:
??
??????ln0?ln0?ln2 2??0?12??0?22??0?12 以上求解過(guò)程往往容易理解,但是由唯一性定理,若要使兩平行線(xiàn)電荷在兩圓柱導(dǎo)體外部空間引起的電場(chǎng)與兩圓柱導(dǎo)體之間原來(lái)的電場(chǎng)完全相同,則要找到兩個(gè)與兩圓柱導(dǎo)體表面圓周相重合的圓周來(lái),換句話(huà)來(lái)說(shuō),圓柱導(dǎo)體表面是等位面,若電軸產(chǎn)生的電位使原來(lái)圓柱導(dǎo)體所在位置表面電位相同即可。這一層次學(xué)生往往難以理解,現(xiàn)在通過(guò)MATLAB編程畫(huà)出平行雙線(xiàn)的等位線(xiàn)圖,就可以清楚地看到等位面所在的位置。程序如下:
%平行雙線(xiàn)的等位線(xiàn)圖如圖1所示 [x,y]=meshgrid(-3:.01:3,-3:.01:3);f=log(sqrt((x+1).^2+y.^2+eps))-log(sqrt((x-1).^2+y.^2+eps));v=[-17,-1.5,-1,-.5,-.2,0,.2,.5,1,1.5,17];[C,h]=contour(x,y,f,v,'m');clabel(C)xlabel('x')ylabel('y')
圖1平行雙線(xiàn)的等位線(xiàn)圖
%平行雙線(xiàn)的電位和歸一化電場(chǎng)分布如圖2所示 [x,y]=meshgrid(-3:.25:3,-3:.25:3);f=log(sqrt((x+1).^2+y.^2+eps))-log(sqrt((x-1).^2+y.^2+eps));v=[-17,-1.5,-1,-.5,-.2,0,.2,.5,1,1.5,17];[C,h]=contour(x,y,f,v,'b');hold on [dx,dy]=gradient(-f,.25,.25);D=sqrt(dx.^2+dy.^2);dx=dx./D;dy=dy./D;quiver(x,y,dx,dy,.7);xlabel('x')ylabel('y')
圖2平行雙線(xiàn)的電位和歸一化電場(chǎng)分布 %平行雙線(xiàn)的電位三維立體圖如圖3所示 syms x y V=log(sqrt((x+1).^2+y.^2))-log(sqrt((x-1).^2+y.^2));xMax=8;NGrid=40;xPlot=linspace(-xMax,xMax,NGrid);[x,y]=meshgrid(xPlot);VPlot=eval(V);[ExPlot,EyPlot]=gradient(-VPlot);clf;subplot(1,2,1),meshc(VPlot);xlabel('x');ylabel('y');zlabel('電位');
圖3平行雙線(xiàn)的電位三維立體圖
通過(guò)引入MATLAB強(qiáng)大的繪圖功能,可以將數(shù)據(jù)以多種圖形形式表現(xiàn)出來(lái),實(shí)現(xiàn)了電磁場(chǎng)可視化,使電磁場(chǎng)中的概念更加直觀、清晰,易于接受,使學(xué)生能夠進(jìn)一步深入分析、理解電磁場(chǎng)的各種性能。4 結(jié)語(yǔ)
在電磁場(chǎng)課程教學(xué)的過(guò)程中,利用MATLAB軟件進(jìn)行技算、模擬、實(shí)現(xiàn)結(jié)果的可視化,大大提高了學(xué)生的解題速度,有效地提高了學(xué)生學(xué)習(xí)的興趣,使學(xué)生能夠進(jìn)一步理解電磁場(chǎng)的空間物理現(xiàn)象,同時(shí)也豐富了教師教學(xué)的方法和手段,為電磁場(chǎng)理論的可視化提供了一個(gè)新的平臺(tái)。參考文獻(xiàn)
[1] 馮慈璋,馬西奎.工程電磁場(chǎng)導(dǎo)論.高等教育出版社.2000
[2] 周立鵬等.MATLAB在電磁場(chǎng)教學(xué)中的應(yīng)用[Z].科技信息, 2009, 35:516-517 [3] 劉美麗.MATLAB語(yǔ)言及應(yīng)用.國(guó)防工業(yè)出版社.2012 [4] 杰榮,蔡新華,胡惟文.基于MATLAB的空間電磁場(chǎng)分布可視化研究.中國(guó)科技論文統(tǒng)計(jì)源期刊.2005
The Application of MATLAB in Electromagnetic Field
SHI Lei, HAO Jing(Northeast Dianli University, Jilin Jilin 132012)Abstract: Electromagnetic Field theory is hard and the concepts are nonrepresentational, requiring us to have strong imaginary abilities of multidimensional space and logical thinking abilities as well.In this paper the basic calculation and painting functions of MATLAB language are introduced, and particular examples of the Electromagnetic Field are calculated and visualization processed,thus not only the calculation speed can be improved, but also further understanding of the spatial physical phenomena of Electromagnetic Field is made.Keywords:Electromagnetic Field;MATLAB;Visualization
第五篇:深度學(xué)習(xí)方法在圖像處理中的應(yīng)用與研究(總結(jié))
深度學(xué)習(xí)方法在圖像處理中的應(yīng)用與研究
1.概述和背景........................................................................................................1 2.人腦視覺(jué)機(jī)理......................................................................................................3 3.深度學(xué)習(xí)的基本思想..........................................................................................6 4.深度學(xué)習(xí)的常用方法..........................................................................................7 5.總結(jié)與展望.......................................................................................................9
深度學(xué)習(xí)方法在圖像處理中的應(yīng)用與研究
1.概述和背景
Artificial Intelligence,也就是人工智能,就像長(zhǎng)生不老和星際漫游一樣,是人類(lèi)最美好的夢(mèng)想之一。雖然計(jì)算機(jī)技術(shù)已經(jīng)取得了長(zhǎng)足的進(jìn)步,但是到目前為止,還沒(méi)有一臺(tái)電腦能產(chǎn)生“自我”的意識(shí)。是的,在人類(lèi)和大量現(xiàn)成數(shù)據(jù)的幫助下,電腦可以表現(xiàn)的十分強(qiáng)大,但是離開(kāi)了這兩者,它甚至都不能分辨一個(gè)喵星人和一個(gè)汪星人。
圖靈(圖靈,大家都知道吧。計(jì)算機(jī)和人工智能的鼻祖,分別對(duì)應(yīng)于其著名的“圖靈機(jī)”和“圖靈測(cè)試”)在 1950 年的論文里,提出圖靈試驗(yàn)的設(shè)想,即,隔墻對(duì)話(huà),你將不知道與你談話(huà)的,是人還是電腦。這無(wú)疑給計(jì)算機(jī),尤其是人工智能,預(yù)設(shè)了一個(gè)很高的期望值。但是半個(gè)世紀(jì)過(guò)去了,人工智能的進(jìn)展,遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到圖靈試驗(yàn)的標(biāo)準(zhǔn)。這不僅讓多年翹首以待的人們,心灰意冷,認(rèn)為人工智能是忽悠,相關(guān)領(lǐng)域是“偽科學(xué)”。
但是自 2006 年以來(lái),機(jī)器學(xué)習(xí)領(lǐng)域,取得了突破性的進(jìn)展。圖靈試驗(yàn),至少不是那么可望而不可及了。至于技術(shù)手段,不僅僅依賴(lài)于云計(jì)算對(duì)大數(shù)據(jù)的并行處理能力,而且依賴(lài)于算法。這個(gè)算法就是,Deep Learning。借助于 Deep Learning 算法,人類(lèi)終于找到了如何處理“抽象概念”這個(gè)亙古難題的方法。
在實(shí)際應(yīng)用中,例如對(duì)象分類(lèi)問(wèn)題如對(duì)象的分類(lèi)(對(duì)象可是文檔、圖像、音頻等),我們不得不面對(duì)的一個(gè)是問(wèn)題是如何用數(shù)據(jù)來(lái)表示這個(gè)對(duì)象,當(dāng)然這里的數(shù)據(jù)并非初始的像素或者文字,也就是這些數(shù)據(jù)是比初始數(shù)據(jù)具有更為高層的含義,這里的數(shù)據(jù)往往指的就是對(duì)象的特征。例如人們常常將文檔、網(wǎng)頁(yè)等數(shù)據(jù)用詞的集合來(lái)表示,根據(jù)文檔的詞集合表示到一個(gè)詞組短語(yǔ)的向量空間(vector space model, VSM模型)中,然后才能根抓不同的學(xué)習(xí)方法設(shè)計(jì)出適用的分類(lèi)器來(lái)對(duì)目標(biāo)對(duì)象進(jìn)行分類(lèi);又如在圖像處理中,像素強(qiáng)度的集合的表示方法可以最初淺的表示一幅圖像,這也是我們視覺(jué)意義上的圖像,一可是由于各種原因人們提出了更高層的語(yǔ)義的特征,如SIFT為經(jīng)典的幾何特征、以L(fǎng)BP為經(jīng)典的紋理特征、以特征臉為經(jīng)典的統(tǒng)計(jì)特征等,像SIFT,特征在很多圖像處理的應(yīng)用中突顯出其優(yōu)越性,因此特征選取得好壞對(duì)于實(shí)際應(yīng)用的影響是很深刻的。因此,選取什么特征或者用什么特征來(lái)表示某一對(duì)象對(duì)于解決一個(gè)實(shí)際問(wèn)題非常的重要。然而,人為地選取特征的時(shí)間代價(jià)是非常昂貴,另外勞動(dòng)成本也高,而所謂的啟發(fā)式的算法得到的結(jié)果往往不穩(wěn)定,結(jié)果好壞經(jīng)常是依靠經(jīng)驗(yàn)和運(yùn)氣。既然如此,人們自然考慮到自動(dòng)學(xué)習(xí)來(lái)完成特征抽取這一任務(wù)。Deep Learning的產(chǎn)生就是緣于此任務(wù),它又被稱(chēng)為無(wú)監(jiān)督的特征學(xué)習(xí)(Unsupervised Feature Learning),一顯然從這個(gè)名稱(chēng)就可以知道這是一個(gè)沒(méi)有人為參與的特征選取方法。
深度學(xué)習(xí)(Deep Learning)的概念是2006年左右由 Geoffrey Hinton等人在《science》上發(fā)表的一篇文章((Reducing the dimensionality of data with neural networks》》提出來(lái)的,主要通過(guò)神經(jīng)網(wǎng)絡(luò)(Neural Network NN)來(lái)模擬人的大腦 的學(xué)習(xí)過(guò)程,希望借鑒人腦的多層抽象機(jī)制來(lái)實(shí)現(xiàn)對(duì)現(xiàn)實(shí)對(duì)象或數(shù)抓(圖像、語(yǔ)音及文木等)的抽象表達(dá),整合特征抽取和分類(lèi)器到一個(gè)學(xué)習(xí)框架下,特征的抽取過(guò)程中應(yīng)該盡量少地減少人為的干預(yù)。
深度學(xué)習(xí)是通過(guò)大量的簡(jiǎn)單神經(jīng)元組成,每層的神經(jīng)元接收更低層的神經(jīng)元的輸入,通過(guò)輸入與輸出之間的非線(xiàn)性關(guān)系,將低層特征組合成更高層的抽象表示,并發(fā)現(xiàn)觀測(cè)數(shù)據(jù)的分布式特征。通過(guò)自下而上的學(xué)習(xí)形成多層的抽象表示,并多層次的特征學(xué)習(xí)是大連理卜大學(xué)碩十學(xué)位論文一個(gè)自動(dòng)地?zé)o人工干預(yù)的過(guò)程。根據(jù)學(xué)習(xí)到的網(wǎng)絡(luò)結(jié)構(gòu),系統(tǒng)將輸入的樣本數(shù)據(jù)映射到各種層次的特征,并利用分類(lèi)器或者匹配算法對(duì)頂層的輸出單元進(jìn)行分類(lèi)識(shí)別等。
2.人腦視覺(jué)機(jī)理
研究表明,哺乳動(dòng)物的大腦皮層,處理輸入信息時(shí)是采用了一種分層機(jī)制,信息從感知器官輸入后,經(jīng)過(guò)多層的神經(jīng)元,在經(jīng)過(guò)每一層神經(jīng)元時(shí),神經(jīng)元會(huì)將能夠體現(xiàn)對(duì)象本質(zhì)的特征抽取出來(lái),然后將這些特征繼續(xù)傳遞到下一層神經(jīng)元上,同樣地,后繼的各層神經(jīng)元都是以類(lèi)似的方式處理和傳遞信息,最后傳至大腦。深層的人工神經(jīng)網(wǎng)絡(luò)的誕生很大程度上受這一發(fā)現(xiàn)的啟示,即構(gòu)建一種包含多層結(jié)點(diǎn),并且使得信息、得以逐層處理抽象的神經(jīng)網(wǎng)絡(luò)。
換言之,哺乳動(dòng)物的大腦是以深度方式組織的,這一類(lèi)深層的結(jié)構(gòu)組織里的每一層會(huì)對(duì)于輸入進(jìn)行不同層次的信息處理或者抽象表示,因此,實(shí)際生活中,層次化的方法經(jīng)常被用于表示一些抽象的語(yǔ)義概念。與哺乳動(dòng)物一樣,人類(lèi)的大腦處理信矛息時(shí)也是采用逐層傳輸和表達(dá)的方式,人腦的初級(jí)視覺(jué)系統(tǒng),首先利用某些神經(jīng)元探測(cè)物體邊界、元形狀,然后又利用其他的神經(jīng)元組織,逐步向上處理形成更復(fù)雜的視覺(jué)形狀。人腦識(shí)別物體的原理是:外部世界中的物體先在視網(wǎng)膜上進(jìn)行投影,然后大腦的視皮層對(duì)于聚集在視網(wǎng)膜上的投影進(jìn)行分解處理,最后利用這些分解處理后的信息進(jìn)行物體識(shí)別。因此視皮層的功能不是僅限于簡(jiǎn)單的重現(xiàn)視網(wǎng)膜圖像,而是提取和計(jì)算感知信號(hào)。
視覺(jué)系統(tǒng)的輸入數(shù)據(jù)量在人類(lèi)感知系統(tǒng)的層次結(jié)構(gòu)進(jìn)行了維數(shù)減約,并剔除了與物體個(gè)性無(wú)關(guān)的信息;例如對(duì)于處理潛在結(jié)構(gòu)是復(fù)雜的豐富數(shù)據(jù)(如圖像、視頻、主意等),深度學(xué)習(xí)應(yīng)該與人類(lèi)視覺(jué)系統(tǒng)一樣可以精準(zhǔn)地獲取對(duì)象的本質(zhì)特征。深度學(xué)習(xí)的構(gòu)想是借鑒大腦的分層組織方式,通過(guò)由下向上、由簡(jiǎn)單到高級(jí)的逐層抽象的特征學(xué)習(xí),研究者們期望深度網(wǎng)絡(luò)結(jié)構(gòu)能通過(guò)模擬大腦來(lái)解決復(fù)雜的模式識(shí)別難題。因此,深層的人工神經(jīng)網(wǎng)絡(luò)是一種人工定義用于模擬人腦組織形式的多層神經(jīng)網(wǎng)絡(luò)。
從文本來(lái)說(shuō),一個(gè)doc表示什么意思?我們描述一件事情,用什么來(lái)表示比較合適?用一個(gè)一個(gè)字嘛,我看不是,字就是像素級(jí)別了,起碼應(yīng)該是term,換句話(huà)說(shuō)每個(gè)doc都由term構(gòu)成,但這樣表示概念的能力就夠了嘛,可能也不夠,需要再上一步,達(dá)到topic級(jí),有了topic,再到doc就合理。但每個(gè)層次的數(shù)量差距很大,比如doc表示的概念->topic(千-萬(wàn)量級(jí))->term(10萬(wàn)量級(jí))->word(百萬(wàn)量級(jí))。
一個(gè)人在看一個(gè)doc的時(shí)候,眼睛看到的是word,由這些word在大腦里自動(dòng)切詞形成term,在按照概念組織的方式,先驗(yàn)的學(xué)習(xí),得到topic,然后再進(jìn)行高層次的learning。
那我們需要有多少個(gè)特征呢?我們知道需要層次的特征構(gòu)建,由淺入深,但每一層該有多少個(gè)特征呢?
任何一種方法,特征越多,給出的參考信息就越多,準(zhǔn)確性會(huì)得到提升。但特征多意味著計(jì)算復(fù)雜,探索的空間大,可以用來(lái)訓(xùn)練的數(shù)據(jù)在每個(gè)特征上就會(huì)稀疏,都會(huì)帶來(lái)各種問(wèn)題,并不一定特征越多越好。
一些淺層的算法(指僅含一個(gè)隱層的神經(jīng)網(wǎng)絡(luò)、核回歸、支撐向量機(jī)等),當(dāng)
給定有限數(shù)量的樣本和計(jì)算單元時(shí),淺層結(jié)構(gòu)難以有效地表示復(fù)雜函數(shù),并且對(duì)于復(fù)雜分類(lèi)問(wèn)題表現(xiàn)性能及泛化能力針均有明顯的不足,尤其當(dāng)目標(biāo)對(duì)象具有豐富的含義。深度學(xué)習(xí)通過(guò)大量的簡(jiǎn)單神經(jīng)元組成的網(wǎng)絡(luò),利用輸入與輸出之間的非線(xiàn)性關(guān)系,對(duì)復(fù)雜函數(shù)進(jìn)行近似,對(duì)觀測(cè)樣本進(jìn)行擬合,并在學(xué)習(xí)輸入樣本本質(zhì)特征的抽取上體現(xiàn)了強(qiáng)大的能力。有文獻(xiàn)中就列舉出一系列無(wú)法使用淺層網(wǎng)絡(luò)表示的函數(shù),這些研究成果揭示了淺層網(wǎng)絡(luò)的局限性,從而也激發(fā)了人們探尋深度網(wǎng)絡(luò)在一些復(fù)雜函數(shù)表示和復(fù)雜分類(lèi)的應(yīng)用前景。指出深度學(xué)習(xí)結(jié)構(gòu)在對(duì)于復(fù)雜函數(shù)的表示問(wèn)題上具有非常高的效率及效果,而一個(gè)不適用的結(jié)構(gòu)模型否(如淺層網(wǎng)絡(luò))對(duì)數(shù)據(jù)建模時(shí)可能需要數(shù)目非常大的計(jì)算單元。
3.深度學(xué)習(xí)的基本思想
假設(shè)一個(gè)系統(tǒng)S,它是一個(gè)n層(S1,?,Sn)的結(jié)構(gòu),I是系統(tǒng)的輸入,O是系統(tǒng)輸出,形象地表示為:I =>S1=>S2=>...=>Sn=>O,如果輸出O等于輸入I,物理意義也就是表明在經(jīng)過(guò)系統(tǒng)變化之后,輸入I的信息量沒(méi)有任何損失,和原始的輸入保持了不變,這表明了輸入I經(jīng)過(guò)每一層S;均沒(méi)有丟失任何信息,,即在任何一層S;,它都是輸入I也就是原始信息的另外一種表示。簡(jiǎn)單說(shuō),深度學(xué)習(xí)的精髓也就是,在一個(gè)n層的神經(jīng)網(wǎng)絡(luò)中,任何一層的輸入I和輸出O是“相等.’的。學(xué)習(xí)過(guò)程中,我們希望它是不需要人為干預(yù)的,它能夠自動(dòng)地學(xué)習(xí)對(duì)象的特征。在給定一組原始的輸入I(可以理解為是一堆圖像或者文本、一段語(yǔ)音之類(lèi)),經(jīng)過(guò)一個(gè)包含n層的系統(tǒng)S時(shí),我們通過(guò)調(diào)整系統(tǒng)中參數(shù),使得輸出與輸出相等,即輸出O仍然是輸入I,這樣,我們就獲取了輸入I(原始數(shù)據(jù))的一系列的層次特征,記為S,...Sn。
另外,前面是假設(shè)輸出嚴(yán)格地等于輸入,即這個(gè)地方“相等”有兩個(gè)含義在里面:第一個(gè)是說(shuō)O和I不是在絕對(duì)形式上的相等,而是在抽象意義上的相等;另外一點(diǎn)指的是限制的約束的程度,比如說(shuō)是不會(huì)造成歧義的完全“相等”還是有適當(dāng)寬松條件的“相等”。而絕對(duì)意義上的“相等”這個(gè)限制太嚴(yán)格,我們可以略微地放松這個(gè)限制,例如我們只要使得輸入與輸出的差別盡可能地小即可,這個(gè)放松會(huì)形成另外一類(lèi)不同的深度學(xué)習(xí)的方法。舉個(gè)不太恰當(dāng)?shù)睦樱热缯f(shuō)對(duì)“交通工具”這個(gè)概念上,I是“可以駕駛的四個(gè)輪子”,O是“車(chē)”,這樣雖然對(duì)兩者的描述不一致,但是我們都一可以理解為“交通工具”了。上述就是深度學(xué)習(xí)的基本思想,而上述中的兩個(gè)思想也對(duì)應(yīng)了深度學(xué)習(xí)中的兩個(gè)經(jīng)典的方法AutoEncoder和Sparse Coding,還有一個(gè)很常用的方法就是受限玻爾茲曼機(jī)(Restrict Boltzmann Machine,RBM)。
4.深度學(xué)習(xí)的常用方法
4.1AutoEncoder自動(dòng)編碼器
最簡(jiǎn)單的一種方法是利用人工神經(jīng)網(wǎng)絡(luò)的特點(diǎn),人工神經(jīng)網(wǎng)絡(luò)(ANN)本身就是具有層次結(jié)構(gòu)的系統(tǒng),如果給定一個(gè)神經(jīng)網(wǎng)絡(luò),我們假設(shè)其輸出與輸入是相同的,然后訓(xùn)練調(diào)整其參數(shù),得到每一層中的權(quán)重,自然地,我們就得到了輸入I的兒種不同表示(每一層是輸入的一種表示),這些表示就是特征,在研究中可以發(fā)現(xiàn),如果在原有的特征中加入這些自動(dòng)學(xué)習(xí)得到的特t正可以大大提高精確度,甚至在分類(lèi)問(wèn)題中比}」前址好的分類(lèi)算法效果還要好,這種方法稱(chēng)為自動(dòng)編碼(AutoEncoder)。
4.2、Sparse Coding稀疏編碼
如果我們把輸出必須和輸入相等的限制放松,同時(shí)利用線(xiàn)性代數(shù)中基的概念,即O=Wx B, +硯x B, +...+W,x B, , B是基,W;是系數(shù),我們可以得到這樣一個(gè)優(yōu)化問(wèn)題:Min 11一Olo 通過(guò)求解這個(gè)最優(yōu)化式子,我們可以求得系數(shù)W和基B;,這些系數(shù)和基礎(chǔ)就是輸入的另外一種近似表達(dá),因此,它們可以被當(dāng)成特征來(lái)表達(dá)輸入I,這個(gè)過(guò)程也是自動(dòng)學(xué)習(xí)得到的。如果我們?cè)谏鲜鍪阶由霞由螸1的Regularity限制,得到:
Min}I一O}+u*(IW卜}硯I+?+}W,})。(2.1)種方法被稱(chēng)為Sparse Coding,它是一種對(duì)對(duì)象的簡(jiǎn)潔表征的方法,這種方法可以自動(dòng)地學(xué)習(xí)到隱藏在對(duì)象數(shù)據(jù)潛在的基函數(shù)。
4.3、Restricted Boltzmann Machine(RBM)限制波爾茲曼機(jī)
假設(shè)有一個(gè)二部圖,每一個(gè)相同層的節(jié)點(diǎn)之間沒(méi)有鏈接,一層是可視層,即輸入數(shù)據(jù)層(v),一層是隱層(h),如果假設(shè)所有的節(jié)點(diǎn)都是二值變量節(jié)點(diǎn)(只能取0或者1值),同時(shí)假設(shè)聯(lián)合概率分布p(v, h)滿(mǎn)足Boltzmann分布,我們稱(chēng)這個(gè)模型是受限玻爾茲曼機(jī)(RBM)。下面我們來(lái)看看為什么它是Deep Learning方法。首先,這個(gè)模型因?yàn)槭嵌繄D,所以在己知v的情況下,所有的隱藏節(jié)點(diǎn)之間是條件獨(dú)立的,即p(hIv卜p(h, I 1,)...p(h-I v)。同理,在己知隱藏層h的情況下,所有的可視節(jié)點(diǎn)都是條件獨(dú)立的,同時(shí)又由于所有的v和h滿(mǎn)足Boltzmann分布,因此,當(dāng)輸入v的時(shí)候,通過(guò)p(hlv)可以得到隱藏層h,而得到隱藏層h之后,通過(guò)p(vlh)又能重構(gòu)可視層,通過(guò)調(diào)整參數(shù),我們就是要使得從隱藏層得到的可視層VI與原來(lái)的可視層v如果一樣,那么得到的隱藏層就是可視層的另外一種表達(dá),因此隱藏層可以作為可視層輸入數(shù)據(jù)的特征,所以它就是一種Dcep Learning方法。文獻(xiàn)X32]從理論一上證明,當(dāng)隱層節(jié)點(diǎn)足夠多時(shí),深度網(wǎng)絡(luò)就可以表示任意離散分布;文獻(xiàn)[33]指出受限玻爾茲曼機(jī)中的隱層節(jié)點(diǎn)與可視節(jié)點(diǎn)可以為任意的指數(shù)族單元(即給定隱單元(可見(jiàn)單元),可見(jiàn)單元(隱單元)的分布的
形式一可以為任意的指數(shù)族分布),如高斯單元、softmax單元、泊松單元等等。
4.4、Deep BeliefNetworks深信度網(wǎng)絡(luò)
DBNs是一個(gè)概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對(duì),生成模型是建立一個(gè)觀察數(shù)據(jù)和標(biāo)簽之間的聯(lián)合分布,對(duì)P(Observation|Label)和 P(Label|Observation)都做了評(píng)估,而判別模型僅僅而已評(píng)估了后者,也就是P(Label|Observation)。對(duì)于在深度神經(jīng)網(wǎng)絡(luò)應(yīng)用傳統(tǒng)的BP算法的時(shí)候,DBNs遇到了以下問(wèn)題:
(1)需要為訓(xùn)練提供一個(gè)有標(biāo)簽的樣本集;(2)學(xué)習(xí)過(guò)程較慢;
(3)不適當(dāng)?shù)膮?shù)選擇會(huì)導(dǎo)致學(xué)習(xí)收斂于局部最優(yōu)解。
目前,和DBNs有關(guān)的研究包括堆疊自動(dòng)編碼器,它是通過(guò)用堆疊自動(dòng)編碼器來(lái)替換傳統(tǒng)DBNs里面的RBMs。這就使得可以通過(guò)同樣的規(guī)則來(lái)訓(xùn)練產(chǎn)生深度多層神經(jīng)網(wǎng)絡(luò)架構(gòu),但它缺少層的參數(shù)化的嚴(yán)格要求。與DBNs不同,自動(dòng)編碼器使用判別模型,這樣這個(gè)結(jié)構(gòu)就很難采樣輸入采樣空間,這就使得網(wǎng)絡(luò)更難捕捉它的內(nèi)部表達(dá)。但是,降噪自動(dòng)編碼器卻能很好的避免這個(gè)問(wèn)題,并且比傳統(tǒng)的DBNs更優(yōu)。它通過(guò)在訓(xùn)練過(guò)程添加隨機(jī)的污染并堆疊產(chǎn)生場(chǎng)泛化性能。訓(xùn)練單一的降噪自動(dòng)編碼器的過(guò)程和RBMs訓(xùn)練生成模型的過(guò)程一樣。
4.5 Networks卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語(yǔ)音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn)。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類(lèi)似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。該優(yōu)點(diǎn)在網(wǎng)絡(luò)的輸入是多維圖像時(shí)表現(xiàn)的更為明顯,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過(guò)程。卷積網(wǎng)絡(luò)是為識(shí)別二維形狀而特殊設(shè)計(jì)的一個(gè)多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對(duì)平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。
CNNs是受早期的延時(shí)神經(jīng)網(wǎng)絡(luò)(TDNN)的影響。延時(shí)神經(jīng)網(wǎng)絡(luò)通過(guò)在時(shí)間維度上共享權(quán)值降低學(xué)習(xí)復(fù)雜度,適用于語(yǔ)音和時(shí)間序列信號(hào)的處理。
CNNs是第一個(gè)真正成功訓(xùn)練多層網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)算法。它利用空間關(guān)系減少需要學(xué)習(xí)的參數(shù)數(shù)目以提高一般前向BP算法的訓(xùn)練性能。CNNs作為一個(gè)深度學(xué)習(xí)架構(gòu)提出是為了最小化數(shù)據(jù)的預(yù)處理要求。在CNN中,圖像的一小部分(局部感受區(qū)域)作為層級(jí)結(jié)構(gòu)的最低層的輸入,信息再依次傳輸?shù)讲煌膶?,每層通過(guò)一個(gè)數(shù)字濾波器去獲得觀測(cè)數(shù)據(jù)的最顯著的特征。這個(gè)方法能夠獲取對(duì)平移、縮放和旋轉(zhuǎn)不變的觀測(cè)數(shù)據(jù)的顯著特征,因?yàn)閳D像的局部感受區(qū)域允許神經(jīng)元或者處理單元可以訪(fǎng)問(wèn)到最基礎(chǔ)的特征,例如定向邊緣或者角點(diǎn)。
5.總結(jié)與展望
1)Deep learning總結(jié)
深度學(xué)習(xí)是關(guān)于自動(dòng)學(xué)習(xí)要建模的數(shù)據(jù)的潛在(隱含)分布的多層(復(fù)雜)表達(dá)的算法。換句話(huà)來(lái)說(shuō),深度學(xué)習(xí)算法自動(dòng)的提取分類(lèi)需要的低層次或者高層次特征。高層次特征,一是指該特征可以分級(jí)(層次)地依賴(lài)其他特征,例如:對(duì)于機(jī)器視覺(jué),深度學(xué)習(xí)算法從原始圖像去學(xué)習(xí)得到它的一個(gè)低層次表達(dá),例如邊緣檢測(cè)器,小波濾波器等,然后在這些低層次表達(dá)的基礎(chǔ)上再建立表達(dá),例如這些低層次表達(dá)的線(xiàn)性或者非線(xiàn)性組合,然后重復(fù)這個(gè)過(guò)程,最后得到一個(gè)高層次的表達(dá)。
Deep learning能夠得到更好地表示數(shù)據(jù)的feature,同時(shí)由于模型的層次、參數(shù)很多,capacity足夠,因此,模型有能力表示大規(guī)模數(shù)據(jù),所以對(duì)于圖像、語(yǔ)音這種特征不明顯(需要手工設(shè)計(jì)且很多沒(méi)有直觀物理含義)的問(wèn)題,能夠在大規(guī)模訓(xùn)練數(shù)據(jù)上取得更好的效果。此外,從模式識(shí)別特征和分類(lèi)器的角度,deep learning框架將feature和分類(lèi)器結(jié)合到一個(gè)框架中,用數(shù)據(jù)去學(xué)習(xí)feature,在使用中減少了手工設(shè)計(jì)feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來(lái)也有很多方便之處,因此,是十分值得關(guān)注的一套框架,每個(gè)做ML的人都應(yīng)該關(guān)注了解一下。
當(dāng)然,deep learning本身也不是完美的,也不是解決世間任何ML問(wèn)題的利器,不應(yīng)該被放大到一個(gè)無(wú)所不能的程度。2)Deep learning未來(lái)
深度學(xué)習(xí)目前仍有大量工作需要研究。目前的關(guān)注點(diǎn)還是從機(jī)器學(xué)習(xí)的領(lǐng)域借鑒一些可以在深度學(xué)習(xí)使用的方法,特別是降維領(lǐng)域。例如:目前一個(gè)工作就是稀疏編碼,通過(guò)壓縮感知理論對(duì)高維數(shù)據(jù)進(jìn)行降維,使得非常少的元素的向量就可以精確的代表原來(lái)的高維信號(hào)。另一個(gè)例子就是半監(jiān)督流行學(xué)習(xí),通過(guò)測(cè)量訓(xùn)練樣本的相似性,將高維數(shù)據(jù)的這種相似性投影到低維空間。另外一個(gè)比較鼓舞人心的方向就是evolutionary programming approaches(遺傳編程方法),它可以通過(guò)最小化工程能量去進(jìn)行概念性自適應(yīng)學(xué)習(xí)和改變核心架構(gòu)。
Deep learning還有很多核心的問(wèn)題需要解決:
(1)對(duì)于一個(gè)特定的框架,對(duì)于多少維的輸入它可以表現(xiàn)得較優(yōu)(如果是圖像,可能是上百萬(wàn)維)?
(2)對(duì)捕捉短時(shí)或者長(zhǎng)時(shí)間的時(shí)間依賴(lài),哪種架構(gòu)才是有效的?(3)如何對(duì)于一個(gè)給定的深度學(xué)習(xí)架構(gòu),融合多種感知的信息?
(4)有什么正確的機(jī)理可以去增強(qiáng)一個(gè)給定的深度學(xué)習(xí)架構(gòu),以改進(jìn)其魯棒性和對(duì)扭曲和數(shù)據(jù)丟失的不變性?
(5)模型方面是否有其他更為有效且有理論依據(jù)的深度模型學(xué)習(xí)算法?
探索新的特征提取模型是值得深入研究的內(nèi)容。此外有效的可并行訓(xùn)練算法也是值得研究的一個(gè)方向。當(dāng)前基于最小批處理的隨機(jī)梯度優(yōu)化算法很難在多計(jì)算機(jī)中進(jìn)行并行訓(xùn)練。通常辦法是利用圖形處理單元加速學(xué)習(xí)過(guò)程。然而單個(gè)機(jī)器GPU對(duì)大規(guī)模數(shù)據(jù)識(shí)別或相似任務(wù)數(shù)據(jù)集并不適用。在深度學(xué)習(xí)應(yīng)用拓展方面,如何合理充分利用深度學(xué)習(xí)在增強(qiáng)傳統(tǒng)學(xué)習(xí)算法的性能仍是目前各領(lǐng)域的研究重點(diǎn)。