MATLAB圖像處理工具箱函數(細化篇)
第3章 MATLAB數字圖像處理工具箱
3.1 MATLAB圖像預處理
3.1.1 圖像處理的基本操作
1. 讀入并顯示一幅圖像
clear %清除所有的工作平臺變量
close all %關閉已打開的圖形窗口
I=imread ('pout.tif'); %讀取圖像pout.tif(該圖像是圖像處理工具箱自帶的圖像),
%存儲在一個名為I的數組中
imshow(I) %顯示圖像I
2. 檢查內存中的圖像
whos %查看圖像數據I是如何存儲在內存中的。
3. 實現直方圖均衡化
figure %生成一個新的圖形窗口,避免后面的圖像覆蓋前面圖像的顯示
imhist(I) %創建描述圖像I灰度分布的直方圖
I2=histeq(I); %將圖像的灰度值擴展到整個灰度范圍,從而提高圖像數組I的對比度。
figure,imshow(I2) %顯示修改過的圖像I2
figure,imhist(I2) %顯示拓展后的灰度值的分布情況
4. 保存圖像
imwrite(I2,'pout.png'); %將圖像I2以PNG圖像文件格式保存到磁盤
5. 檢查新生成文件的內容
imfinfo('pout2.png') %觀察保存的圖像文件信息
3.1.2 圖像處理的高級應用
主要對一幅灰度圖像rice.tif進行一些較為高級的操作為例說明整個過程。
1. 讀取和顯示圖像
clear %清除所有的工作平臺變量
close all %關閉已打開的圖形窗口
I=imread('rice.png'); %讀取圖像rice.png (該圖像是圖像處理工具箱自帶的圖像)
imshow(I) %顯示圖像
2. 估計圖像背景
background=imopen(I,strel('disk',15)); %對圖像I進行形態學開操作,刪除那些不完全包括
%在半徑為15的圓盤中的對象,實現對背景亮度的估計
figure,imshow(background)
figure,surf(double(background(1:8:end,1:8:end))),zlim([0 255]); %以表面形式顯示背景
3. 從原始圖像中減去背景圖像
I2=imsubtract(I,background); %將背景圖像background從原始圖像I中減去
figure,imshow(I2)
4. 調節圖像對比度
I3=imadjust(I2,stretchlim(I2),[0 1]); %調節圖像的對比度
figure,imshow(I3);
5. 使用閾值操作將圖像轉換為二進制圖像
level=graythresh(I3);
bw=im2bw(I3,level);
figure,imshow(bw)
6. 檢查圖像中的對象個數
[labeled,numObjects]=bwlabel(bw,4); %確定圖像中的米粒個數
numObjects
101
7. 檢查標記矩陣
grain=imcrop(labeled) %選擇并顯示已標記的對象和部分背景內的像素
RGB_label=label2rgb(labeled,@spring,'C','shuffle');
%將標記矩陣顯示為一副偽彩色的索引圖像,在偽彩色的彩色圖像中,
%標記矩陣中的每一個對象都將被映射為相關調色板中的不同顏色
imshow(RGB_label);
8.計算圖像中對象的統計屬性
graindata=regionprops(labeled,'basic')
%測量圖像或者區域的屬性,并返回一個結構數組。當用于一個標記圖像時,%它還為每一個標記分量創建一個結構元素。
graindata(51).Area %顯示第51個元素的屬性
graindata(51).BoundingBox,graindata(51).Centroid %尋找最近的邊緣和中心
allgrains=[graindata.Area]; %創建一個新的向量allgrains,其包含每個米粒的范圍
allgrains(51) %查看第51個元素的范圍
max(allgrains) %獲取最大的米粒大小
biggrain=find(allgrains==404) %返回最大米粒的標記號
mean(allgrains) %獲取米粒的平均大小
hist(allgrains,20) %繪制包含20個柱的直方