形態學影象處理(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 畫素:數字影象由有限數量的元素組成,每個元素都有特
Python(1):簡單影象處理(圖片->二進位制->圖片)
#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,取