1. 程式人生 > >形態學影象處理(matlab程式碼測試)

形態學影象處理(matlab程式碼測試)

轉:     http://blog.csdn.net/water_93/article/details/50859193 

 形態學是提取影象特徵的有力工具,針對二值影象和灰度影象的腐蝕、膨脹和重構的基本操作可以組合使用,以執行非常寬泛的任務。其練習程式碼和結果如下:

複製程式碼
  1 %% 第9章 形態學處理
  2 
  3 %% imdilate膨脹
  4 clc
  5 clear
  6 
  7 A1=imread('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif');
  8 info=imfinfo('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif
') 9 B=[0 1 0 10 1 1 1 11 0 1 0]; 12 A2=imdilate(A1,B);%影象A1被結構元素B膨脹 13 A3=imdilate(A2,B); 14 A4=imdilate(A3,B); 15 16 subplot(221),imshow(A1); 17 title('imdilate膨脹原始影象'); 18 19 subplot(222),imshow(A2); 20 title('使用B後1次膨脹後的影象'); 21 22 subplot(223),imshow(A3); 23 title('使用B後2次膨脹後的影象
'); 24 25 subplot(224),imshow(A4); 26 title('使用B後3次膨脹後的影象'); 27%imdilate影象膨脹處理過程執行結果如下:

 28 
 29 %% imerode腐蝕
 30 clc
 31 clear
 32 A1=imread('.\images\dipum_images_ch09\Fig0908(a)(wirebond-mask).tif');
 33 subplot(221),imshow(A1);
 34 title('腐蝕原始影象');
 35 
 36 %strel函式的功能是運用各種形狀和大小構造結構元素
 37 se1=strel('
disk',5);%這裡是建立一個半徑為5的平坦型圓盤結構元素 38 A2=imerode(A1,se1); 39 subplot(222),imshow(A2); 40 title('使用結構原始disk(5)腐蝕後的影象'); 41 42 se2=strel('disk',10); 43 A3=imerode(A1,se2); 44 subplot(223),imshow(A3); 45 title('使用結構原始disk(10)腐蝕後的影象'); 46 47 se3=strel('disk',20); 48 A4=imerode(A1,se3); 49 subplot(224),imshow(A4); 50 title('使用結構原始disk(20)腐蝕後的影象'); 51 %影象腐蝕處理過程執行結果如下: 52
 53 %% 開運算和閉運算
 54 clc
 55 clear
 56 f=imread('.\images\dipum_images_ch09\Fig0910(a)(shapes).tif');
 57 %se=strel('square',5');%方型結構元素 58 se=strel('disk',5');%圓盤型結構元素 59 imshow(f);%原影象
 60 title('開閉運算原始影象')
 61%執行結果如下:

 62 
 63 %開運算數學上是先腐蝕後膨脹的結果
 64 %開運算的物理結果為完全刪除了不能包含結構元素的物件區域,平滑
 65 %了物件的輪廓,斷開了狹窄的連線,去掉了細小的突出部分
 66 fo=imopen(f,se);%直接開運算
 67 figure,subplot(221),imshow(fo);
 68 title('直接開運算');
 69 
 70 %閉運算在數學上是先膨脹再腐蝕的結果
 71 %閉運算的物理結果也是會平滑物件的輪廓,但是與開運算不同的是,閉運算
 72 %一般會將狹窄的缺口連線起來形成細長的彎口,並填充比結構元素小的洞
 73 fc=imclose(f,se);%直接閉運算
 74 subplot(222),imshow(fc);
 75 title('直接閉運算');
 76 
 77 foc=imclose(fo,se);%先開後閉運算
 78 subplot(223),imshow(foc);
 79 title('先開後閉運算');
 80 
 81 fco=imopen(fc,se);%先閉後開運算
 82 subplot(224),imshow(fco);
 83 title('先閉後開運算');
 84%開閉運算結果如下:

 85 
 86 %先膨脹再腐蝕
 87 fse=imdilate(f,se);%膨脹
 88 
 89 %gcf為得到當前影象的控制代碼,當前影象是指例如PLOT,TITLE,SURF等
 90 %get函式為得到物體的屬性,get(0,'screensize')為返回所有物體screensize屬性值
 91 %set函式為設定物體的屬性
 92 figure,set(gcf,'outerposition',get(0,'screensize'));%具體目的是設定當前視窗的大小
 93 subplot(211),imshow(fse);
 94 title('使用disk(5)先膨脹後的影象');
 95 
 96 fes=imerode(fse,se);
 97 subplot(212),imshow(fes);
 98 title('使用disk(5)先膨脹再腐蝕後的影象');
 99%先膨脹後腐蝕影象如下:

100 
101 %先腐蝕再膨脹
102 fse=imerode(f,se);
103 figure,set(gcf,'outerposition',get(0,'screensize'))
104 subplot(211),imshow(fse);
105 title('使用disk(5)先腐蝕後的影象');
106 
107 fes=imdilate(fse,se);
108 subplot(212),imshow(fes);
109 title('使用disk(5)先腐蝕再膨脹後的影象');
110%先腐蝕後膨脹的影象如下:

111 
112 %% imopen imclose在指紋上的應用
113 clc
114 clear
115 f=imread('.\images\dipum_images_ch09\Fig0911(a)(noisy-fingerprint).tif');
116 se=strel('square',3);%邊長為3的方形結構元素
117 subplot(121),imshow(f);
118 title('指紋原始影象');
119 
120 A=imerode(f,se);%腐蝕
121 subplot(122),imshow(A);
122 title('腐蝕後的指紋原始影象');
123%指紋原始影象和腐蝕後的影象結果如下:

124 
125 fo=imopen(f,se);
126 figure,subplot(221),imshow(fo);
127 title('使用square(3)開操作後的影象');
128 
129 fc=imclose(f,se);
130 subplot(222),imshow(fc);
131 title('使用square閉操作後的影象');
132 
133 foc=imclose(fo,se);
134 subplot(223),imshow(foc);
135 title('使用square(3)先開後閉操作後的影象')
136 
137 fco=imopen(fc,se);
138 subplot(224),imshow(fco);
139 title('使用square(3)先閉後開操作後的影象');
140%指紋影象開閉操作過程結果如下:

141 
142 %% bwhitmiss擊中或擊不中變換
143 clc
144 clear
145 f=imread('.\images\dipum_images_ch09\Fig0913(a)(small-squares).tif');
146 imshow(f);
147 title('擊中或不擊中原始影象');
148%擊中或不擊中原始影象顯示結果如下:

149 
150 B1=strel([0 0 0;0 1 1;0 1 0]);%擊中:要求擊中所有1的位置
151 B2=strel([1 1 1;1 0 0;1 0 0]);%擊不中,要求擊不中所有1的位置
152 B3=strel([0 1 0;1 1 1;0 1 0]);%擊中
153 B4=strel([1 0 1;0 0 0;0 0 0]);%擊不中
154 B5=strel([0 0 0;0 1 0;0 0 0]);%擊中
155 B6=strel([1 1 1;1 0 0;1 0 0]);%擊不中
156 
157 g=imerode(f,B1)&imerode(~f,B2)%利用定義來實現擊中或擊不中
158 figure,subplot(221),imshow(g);
159 title('定義實現組1擊中擊不中影象');
160 
161 g1=bwhitmiss(f,B1,B2);
162 subplot(222),imshow(g1);
163 title('結構陣列1擊中擊不中後的影象');
164 
165 g2=bwhitmiss(f,B3,B4);
166 subplot(223),imshow(g2);
167 title('結構陣列2擊中擊不中的影象');
168 
169 g3=bwhitmiss(f,B5,B6);
170 subplot(224),imshow(g3);
171 title('結構陣列3擊中擊不中的影象');
172%擊中擊不中變換後圖像如下:

173 
174 %%makelut
175 clc
176 clear
177 
178 f=inline('sum(x(:))>=3');%inline是用來定義區域性函式的
179 lut2=makelut(f,2)%為函式f構造一個接收2*2矩陣的查詢表
180 lut3=makelut(f,3)
181 
182 %% Conway生命遊戲
183 clc
184 clear
185 lut=makelut(@conwaylaws,3);
186 bw1=  [0     0     0     0     0     0     0     0     0     0
187        0     0     0     0     0     0     0     0     0     0
188        0     0     0     1     0     0     1     0     0     0
189        0     0     0     1     1     1     1     0     0     0
190        0     0     1     0     0     0     0     1     0     0
191        0     0     1     0     1     1     0     1     0     0
192        0     0     1     0     0     0     0     1     0     0
193        0     0     0     1     1     1     1     0     0     0
194        0     0     0     0     0     0     0     0     0     0
195        0     0     0     0     0     0     0     0     0     0  ];
196 subplot(221),imshow(bw1,'InitialMagnification','fit');
197 title('Generation 1');
198 
199 bw2=applylut(bw1,lut);
200 subplot(222),imshow(bw2,'InitialMagnification','fit'),
201 title('Generation 2');
202 
203 bw3=applylut(bw2,lut);
204 subplot(223),imshow(bw3,'InitialMagnification','fit');
205 title('Generation 3');
206 
207 temp=bw1;
208 for i=2:100
209     bw100=applylut(temp,lut);
210     temp=bw100;
211 end
212 subplot(224),imshow(bw100,'InitialMagnification','fit')
213 title('Generation 100');
214%顯示Generation結果如下:

215 
216 %% getsequence
217 clc
218 clear
219 se=strel('diamond',5)
220 decomp=getsequence(se)%getsequence函式為得到分解的strel序列
221 decomp(1)
222 decomp(2)
223 
224 %% endpoints
225 clc
226 clear
227 
228 f1=imread('.\images\dipum_images_ch09\Fig0914(a)(bone-skel).tif');
229 subplot(121),imshow(f1);
230 title('原始形態骨架影象');
231 
232 g1=endpoints(f1);
233 %set(gcf,'outerposition',get(0,'screensize'));%執行完後自動生成最大的視窗
234 subplot(122),imshow(g1);
235 title('骨架影象的端點影象');
236 %骨架頭像端點檢測頭像如下:
237 
238 f2=imread('.\images\dipum_images_ch09\Fig0916(a)(bone).tif');
239 figure,subplot(121),imshow(f2);
240 title('原始骨頭影象');
241 
242 g2=endpoints(f2);
243 subplot(122),imshow(g2);
244 title('骨頭影象端點頭像');%結果是沒有端點
245%骨頭頭像端點檢測影象如下:

246 
247 %% bwmorph組合常見形態學之細化
248 clc
249 clear
250 f=imread('.\images\dipum_images_ch09\Fig0911(a)(noisy-fingerprint).tif');
251 subplot(221),imshow(f);
252 title('指紋影象細化原圖');
253 
254 g1=bwmorph(f,'thin',1);
255 subplot(222),imshow(g1);
256 title('指紋影象細化原圖');
257 
258 g2=bwmorph(f,'thin',2);
259 subplot(223),imshow(g2);
260 title('指紋影象細化原圖');
261 
262 g3=bwmorph(f,'thin',Inf);
263 subplot(224),imshow(g3);
264 title('指紋影象細化原圖');
265%指紋影象細化過程顯示如下:

266 
267 %% bwmorph組合常見形態學之骨骼化
268 clc
269 clear
270 f=imread('.\images\dipum_images_ch09\Fig0911(a)(noisy-fingerprint).tif');
271 subplot(131),imshow(f);
272 title('指紋影象骨骼化原圖');
273 
274 fs=bwmorph(f,'skel',Inf);
275 subplot(132),imshow(fs);
276 title('指紋影象骨骼化');
277 
278 
            
           

相關推薦

形態學影象處理matlab程式碼測試

轉:     http://blog.csdn.net/water_93/article/details/50859193   形態學是提取影象特徵的有力工具,針對二值影象和灰度影象的腐蝕、膨脹和重構的基本操作可以組合使用,以執行非常寬泛的任務。其練習程式碼和結果如下: 1 %% 第9章 形

經典數字影象處理matlab 實現

Multi-Scale EPLL Linearized Kernel Dictionary Learning Trainlets: Dictionary Learning in High Dim

數字影象處理MATLAB第二版 岡薩雷斯 學習筆記

數字影象處理(MATLAB)(第二版) 岡薩雷斯 主要用來記錄自己的學習過程,相關實驗內容,便於日後查詢相關知識點及複習所用 第二章 灰度變換和空間濾波 本章重點討論兩類空間域處理方法:亮度(或灰度)變換與空間濾波。空間濾波有時又稱為鄰域處理或空間卷積。

數字影象處理MATLAB岡薩雷斯 中文高清版pdf:

下載地址:網盤下載數字影象處理(MATLAB版)岡薩雷斯+中文高清版。包含MATLAB程式碼實現《數字影象處理(MATLAB版)》是把影象處理基礎理論論述與軟體實踐方法相結合的第一本書,它集成了岡薩雷斯和伍茲所著的《數字影象處理》一書中的重要內容和MathWorks公司的影象處理工具箱。本書的特色在於它重點強

【OpenCV入門教程之十一】 形態學影象處理:開運算、閉運算、形態學梯度、頂帽、黑帽合輯

上篇文章中,我們重點了解了腐蝕和膨脹這兩種最基本的形態學操作,而運用這兩個基本操作,我們可以實現更高階的形態學變換。所以,本文的主角是OpenCV中的morphologyEx函式,它利用基本的膨脹和腐蝕技術,來執行更加高階的形態學變換,如開閉運算、形態學梯度、“頂帽”、“黑帽

【OpenCV入門教程之十】 形態學影象處理:膨脹與腐蝕

本系列文章由@淺墨_毛星雲 出品,轉載請註明出處。 寫作當前博文時配套使用的OpenCV版本: 2.4.8本篇文章中,我們一起探究了影象處理中,最基本的形態學運算——膨脹與腐蝕。淺墨在文章開頭友情提醒,用人物照片做腐蝕和膨脹的素材圖片得到的效果會比較驚悚,毀三觀的,不建議嘗試

數字影象處理第三版入門到放棄---第一章 緒論

數字影象處理---第一章 緒論 引言 1.1 什麼是數字影象處理 1.1.1 數字影象定義:一幅影象在任何一對空間座標的二維函式f(x,y)和它的幅值f稱為該點處的強度和灰度,x,y和灰度值f是有限的離散數值。 1.1.2 畫素:數字影象由有限數量的元素組成,每個元素都有特

Python1:簡單影象處理圖片->二進位制->圖片

#coding=utf-8 ''' 1-將圖片轉化為陣列並存為二進位制檔案 2-從二進位制檔案中讀取數並重新恢復為圖片 ''' from __future__ import print_funct

影象處理】彩色影象處理Color Image Processing

實驗要求   (1.a) 編寫程式實現圖6.23,程式的輸入為影象中指定的兩個灰度級範圍。程式的輸出為RGB 格式影象,其中,一個灰度級範圍顯示為指定的彩色,其餘的畫素以RGB 形式顯示為與輸入影象對應畫素相同的灰度色。   (1.b) 用上述程式對圖1.1

【課程筆記】opencv+tensorflow入門人工智慧影象處理2018-4-19

計算機視覺(opencv+tensorflow) 1.1 mac環境搭建 1、下載安裝anaconda 2、下載安裝tensorflow+配置opencv 3、下載安裝notebook Anaconda中搭建環境都是使用Environment進行搭

影象處理二十一基於資料驅動的人臉卡通動畫生成-Siggraph Asia 2014

基於資料驅動的人臉卡通動畫生成 作者:hjimce 在現實生活中,我們經常會去評價一個人,長得是否漂亮、是不是帥哥美女,然而如何用五官的資料去評價一個人是否長得五官比例協調,我們卻很難說出來,也就是

深度學習影象處理分類or檢測中結果的評價方法-mAP簡介

多標籤影象分類(Multi-label Image Classification)任務中圖片的標籤不止一個,因此評價不能用普通單標籤影象分類的標準,即mean accuracy,該任務採用的是和資訊檢索中類似的方法—mAP(mean Average

影象處理——快速均值濾波MATLAB實現

均值濾波是典型的線性濾波演算法,它是指在影象上對目標畫素給一個模板,該模板包括了其周圍的臨近畫素(以目標畫素為中心的周圍8個畫素,構成一個濾波模板,即去掉目標畫素本身),再用模板中的全體畫素的平均值來代替原來畫素值。 快速均值濾波要求: 在這裡就要先解釋一下積分圖

使用 matlab 數字影象處理—— 去卷積deconvolution,逆濾波復原

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python+OpenCV影象處理十二車牌定位中對影象形態學組合操作處理

車牌定位中對影象的形態學組合操作處理 所謂的車牌定位,其中最關鍵的部分就是對圖片的處理,引數的設定,並使之擁有泛化能力。 首先傳入圖片,在進行大規模的圖片處理時,因為無法確定圖片的尺寸,所以需要將原始圖片進行等比例的縮放。 orgimg = cv2.imread('ch

python數字影象處理18:高階形態學處理

形態學處理,除了最基本的膨脹、腐蝕、開/閉運算、黑/白帽處理外,還有一些更高階的運用,如凸包,連通區域標記,刪除小塊區域等。 1、凸包 凸包是指一個凸多邊形,這個凸多邊形將圖片中所有的白色畫素點都包含在內。 函式為: skimage.morphology.conv

數字影象處理筆記形態學影象處理

1 - 引言 數學形態學的語言是集合論,利用集合論知識我們可以實現影象 腐蝕、膨脹 開操作、筆操作 下面就讓我們學習一下這些基於形態學的影象處理 2 - 腐蝕和膨脹 膨脹與腐蝕能實現多種多樣的功能,主要如下: 消除噪聲 分割(isolat

影象處理-python實現影象處理消噪,直方圖均衡化,二值化,形態學

1、選用合適的影象增強方法對以下給定影象進行增強操作以獲取清晰影象; 2、對增強後的影象進行閾值處理,獲得二值影象; 3、對二值影象進行形態學分析,提取有用資訊區域(即只剩下字母和數字區域);   python程式:     import c

使用 matlab 數字影象處理—— 實現影象的旋轉不使用 imrotate

影象的旋轉是不改變影象的灰度值的,這是將原始位置對映到新的位置。 [x1y11]=[x0y01]⋅⎡⎣⎢cosθ−sinθ0sinθcosθ0001⎤⎦⎥ Image = imread(

MATLAB數字影象處理直方圖均衡化

直方圖均衡化的基本原理是根據原始影象某個畫素點出現的概率對應著累積分佈函式的值決定的,假設原始影象為 該影象的概率密度函式(直方圖)為: 累積分佈函式為: 畫素為3的值,在CDF(3)=0.556,均衡化後的值為0.5556*(灰度級,這裡是9)-1=4.004,取