天天看點

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

一、機器視覺識别簡介

顔色是物體表面的固有特征, 在目辨別别和圖像分割中有着無法替代的作用。機器視覺是利用光電成像系統和圖像處理子產品對物體進行尺寸、形狀、顔色等的識别。這樣, 就把計算機的快速性、可重複性, 與人眼視覺的高度智能化和抽象能力相結合, 用機器代替人眼來作各種測量和判斷, 大大提高了生産的柔性和自動化程度。圖像進行中最适合顯示系統的顔色空間是RGB顔色空間, 但其R、G、B3個分量高度相關, 門檻值選擇困難, 本文提出了一種穩定顔色空間的圖像分割和識别方法, 并應用于自動生産線, 取得良好效果。

1 系統結構

機器視覺系統結構如圖1所示。

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

機器視覺系統中, 從獲得圖像資料到最後獲得處理結果, 通常要經過很多種算法。同時, 不同目的的機器視覺系統要求對圖像作的運算也大為不同。機器視覺系統的輸入是圖像, 而最後的輸出則是一些符号或者數值, 這些符号或數值, 有可能表達了物體的特性 (正品/次品, 阿拉伯數字等) 和位置 (內建電路引腳的位置等等) 。

2.1 圖像平滑

采集的圖像常有噪聲幹擾, 圖像平滑處理有利于改善圖像品質[, 本文采用自适應中值濾波算法。設Sx, y表示中心點 (x, y) 在給定時間的掩模視窗。設Zmin為Sx, y中灰階級最值;Zmed為Sx, y中灰階級中值;Zmax為Sx, y中灰階級最大值;Zx, y為像素 (x, y) 的灰階級;Smax為Sx, y允許最大的尺寸。自适應中值濾波器算法為:

A層算法

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

如果A1>0&A2>0轉到B層。否則, 增大視窗尺寸。

如果視窗尺寸≤Smax重複A層。否則輸出Zx, y。

B層算法

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

如果A1>0&A2>0, 輸出Zx, y。否則輸出Zmed。

2.2 顔色模型轉換

裝置采集的圖像為RGB模型, 為避免計算機對圖像進行處理時因三個量互相影響産生色差或者顔色失真而導緻系統誤判, 需要轉換為HSI模型, 本文采用幾何推導法進行RGB-HSI轉換, 将RGB中的亮度因素進行圓柱極坐标的雙椎體轉換, 将三維變為二維, 在平面中求出HSI模型的色調分量值。

轉換公式如下:

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

其中:H定義顔色的波長, 稱為色調;S表示顔色的深淺程度, 稱為飽和度;I表示強度或亮度。2.3 物體識别

門檻值彩色圖像分割

生産線機器視覺系統中拍攝的物體受光照、噪聲等環境影響, 采集到的物體圖像顔色會與實際顔色存在差異, 物體之間也會存在一定顔色的差異, 同一個物體不同部分也可能存在顔色差異, 要準确識别物體, 需要通過圖像分割來判斷相鄰區域顔色的相似度[7]。門檻值法圖像分割需要選取合适的門檻值, 将計算機擷取的經過顔色模型變換的圖像色彩特征與設定的門檻值進行比較, 以區分工件和背景。

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

f (x, y) 為計算機采集的圖像色彩特征;T為設定的門檻值。如果将圖像二值化, 則b0為0, b1為1。這種方法對被識别物體為單一顔色時較适合。

二、部分源代碼

function varargout = cancer(varargin)
 gui_Singleton = 1;
 gui_State = struct(‘gui_Name’, mfilename, …
 ‘gui_Singleton’, gui_Singleton, …
 ‘gui_OpeningFcn’, @cancer_OpeningFcn, …
 ‘gui_OutputFcn’, @cancer_OutputFcn, …
 ‘gui_LayoutFcn’, [] , …
 ‘gui_Callback’, []);
 if nargin && ischar(varargin{1})
 gui_State.gui_Callback = str2func(varargin{1});
 endif nargout
 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
 else
 gui_mainfcn(gui_State, varargin{:});
 end
 function cancer_OpeningFcn(hObject, eventdata, handles, varargin)
 handles.output = hObject;
 guidata(hObject, handles);
 function varargout = cancer_OutputFcn(hObject, eventdata, handles)
 varargout{1} = handles.output;function pushbutton1_Callback(hObject, eventdata, handles)
 global I
 clc
 [filename, pathname] = uigetfile(‘*.jpg’, ‘Pick an Image’);
 if isequal(filename,0) | isequal(pathname,0)warndlg(‘File is not selected’);
 else
 I=imread(filename);
 axes(handles.axes1)
 imshow(I);
 title ‘Input Image’
 end
 title ‘Input Lung Image’function pushbutton2_Callback(hObject, eventdata, handles)
 global I
 t=rgb2gray(I);
 he=histeq(t);axes(handles.axes2);
 imshow(he);
 title ‘Histogram Equalization’
 function pushbutton3_Callback(hObject, eventdata, handles)
 global I
 t=rgb2gray(I);
 he=histeq(t);
 threshold = graythresh(he);
 bw = im2bw(he,threshold);axes(handles.axes3);
 imshow(bw)
 title ‘Segmentation by Thresholding’function pushbutton4_Callback(hObject, eventdata, handles)
 global I
 t=rgb2gray(I);
 he=histeq(t);
 threshold = graythresh(he);
 bw = im2bw(he,threshold);
 hy = fspecial(‘sobel’);
 hx = hy’;
 Iy = imfilter(double(bw), hy, ‘replicate’);
 axes(handles.axes4);
 imshow(Iy,[]),title(‘Filtered Image’)
function pushbutton5_Callback(hObject, eventdata, handles)
 global I
 t=rgb2gray(I);
 he=histeq(t);
 threshold = graythresh(he);
 bw = im2bw(he,threshold);
 hy = fspecial(‘sobel’);
 hx = hy’;
 Iy = imfilter(double(bw), hy, ‘replicate’);
 se = strel(‘line’,11,90);
 bw2 = imdilate(Iy,se);
 axes(handles.axes5);
 imshow(bw2),
 title(‘Dilated’)function pushbutton6_Callback(hObject, eventdata, handles)
global I
 t=rgb2gray(I);
 he=histeq(t);
 threshold = graythresh(he);
 bw = im2bw(he,threshold);
 hy = fspecial(‘sobel’);
 hx = hy’;
 Iy = imfilter(double(bw), hy, ‘replicate’);
 se = strel(‘line’,11,90);
 bw2 = imdilate(Iy,se);BW5 = imfill(bw2,‘holes’);
 axes(handles.axes6);
 imshow(BW5)title ‘Image Filling’
 function pushbutton7_Callback(hObject, eventdata, handles)
 global I
 t=rgb2gray(I);
 he=histeq(t);
 threshold = graythresh(he);
 bw = im2bw(he,threshold);
 hy = fspecial(‘sobel’);
 hx = hy’;
 Iy = imfilter(double(bw), hy, ‘replicate’);
 se = strel(‘line’,11,90);
 bw2 = imdilate(Iy,se);
 BW5 = imfill(bw2,‘holes’);
 disp (‘Contrast Value’);
 cmap = contrast(BW5)      

三、運作結果

【肺癌識别】基于matlab GUI神經網絡肺癌圖像識别【含Matlab源碼 2201期】

四、matlab版本及參考文獻

1 matlab版本

2014a

繼續閱讀