數(shù)學(xué)軟件Matlab R2016a 64位 完全特別版(附破解文件+密鑰+安裝教程)
類型:編程其它大?。?.6GB語言:簡體中文時間:2016-11-23查看詳情一、圖像基本操作
1、讀取圖像并顯示:
》》 clear;close all %清空Matlab工作平臺所有變量(準(zhǔn)備工作)
》》 I=imread(‘pout.tif’); % 該圖像是Matlab圖形工具箱中自帶的圖像(\toolbox\images\imdemos)
》》 imshow(I)
2、檢查內(nèi)存(數(shù)組)中的圖像:
》》 whos
Name Size Bytes Class
I 291x240 69840 uint8 array
Grand total is 69840 elements using 69840 bytes
表示該圖像采用8位存儲方式并占用了69840B的存儲空間。
3、實現(xiàn)圖像直方圖均衡化:
》》 figure,imhist(I) % 在新圖中顯示圖像I的直方圖
》》 I2=histeq(I); % 均衡化以后的圖像存在I2數(shù)組中(圖像灰度值擴(kuò)展到整個灰度范圍,對比度提高)
》》 figure,imshow(I2) % 顯示均衡化后的圖像
》》 figure,imhist(I2) % 顯示均衡后的灰度值分布情況
8位圖像取值范圍:[0,255],16位圖像取值范圍:[0,655351],雙精度圖像取值范圍:[0,1]
4、保存圖像:
》》 imwrite(I2,‘pout2.png’); % 將圖像由原先的tif格式另存為png格式
5、檢查新生成文件的信息:
》》 imfinfo(‘pout2.png’) % 觀察保存圖像的文件信息
ans =
Filename: ‘pout2.png’ % 文件名
FileModDate: ‘11-Apr-2009 21:55:35’ % 文件修改日期
FileSize: 36938 % 文件大小
Format: ‘png’ % 文件格式
FormatVersion: [] % 格式
Width: 240 % 文件寬度
Height: 291 % 文件高度
BitDepth: 8 % 文件位深度
ColorType: ‘grayscale’ % 顏色類型
……
二、圖像處理Matlab的應(yīng)用:
實例:消除rice.png圖像中亮度不一致的背景,并使用閾值將修改后的圖像轉(zhuǎn)換為二值圖像,使用成員標(biāo)記返回圖像中對象的個數(shù)以及統(tǒng)計特性。按照如下步驟進(jìn)行:
1、讀取和顯示圖像
》》 clear;close all
》》 I=imread(‘rice.png’);
》》 imshow(I)
2、估計圖像背景:
圖像中心位置背景亮度強(qiáng)于其他部分亮度,用imopen函數(shù)和一個半徑為15的圓盤結(jié)構(gòu)元素對輸入的圖像I進(jìn)行形態(tài)學(xué)開操作,去掉那些不完全包括在圓盤中的對象,從而實現(xiàn)對背景亮度的估計。
》》 clear;close all
》》 I=imread(‘rice.png’);
》》 imshow(I)
》》 background=imopen(I,strel(‘disk’,15));
》》 imshow(background)
》》 figure,surf(double(background(1:8:end,1:8:end))),zlim([0,255]);
》》 set(gca,‘ydir’,‘reverse’);
顯示了背景圖(左)和背景表面圖(右)
3、從原始圖像中減去背景圖像(原始圖像I減去背景圖像得到背景較為一致的圖像):
》》 I2=imsubtract(I,background);
》》 figure,imshow(I2)
4、調(diào)節(jié)圖像的對比度 (圖像較暗,可用imadjust函數(shù)命令來調(diào)節(jié)圖像的對比度)
》》 I3=imadjust(I2,stretchlim(I2),[0 1]);
》》 figure,imshow(I3);
5、使用閾值操作將圖像轉(zhuǎn)換為二進(jìn)制(二值)圖像(bw),調(diào)用whos命令查看圖像的存儲信息。
》》 level=graythresh(I3); % 圖像灰度處理
》》 bw=im2bw(I3,level); % 圖像二值化處理
》》 figure,imshow(bw) % 顯示處理后的圖片
》》 whos
Name Size Bytes Class
I 256x256 65536 uint8 array
I2 256x256 65536 uint8 array
I3 256x256 65536 uint8 array
background 256x256 65536 uint8 array
bw 256x256 65536 logical array
level 1x1 8 double array
Grand total is 327681 elements using 327688 bytes
6、檢查圖像中對象個數(shù)(bwlabel函數(shù)表示了二值圖像中的所有相關(guān)成分并返回在圖像中找到的對象個數(shù))
》》 [labeled,numObjects]=bwlabel(bw,4);
》》 numObjects
numObjects =
101
表示圖像中的米粒對象個數(shù)是101.
7、檢查標(biāo)記矩陣:(imcrop命令進(jìn)行交互式操作,圖像內(nèi)拉出較小矩形并顯示已標(biāo)記的對象和部分背景內(nèi)的像素)
》》 grain=imcrop(labeled)
grain =
0 0 42 42 42 42 42 42 42 0
0 0 42 42 42 42 42 42 42 42
0 0 42 42 42 42 42 42 42 42
0 0 42 42 42 42 42 42 42 42
0 0 42 42 42 42 42 42 42 42
0 0 42 42 42 42 42 42 42 42
0 42 42 42 42 42 42 42 42 42
0 42 42 42 42 42 42 42 42 42
8、觀察標(biāo)記矩陣(用label2rgb將其顯示為一副偽彩色的索引圖像):
》》 RGB_label=label2rgb(labeled,@spring,‘c’,‘shuffle’);
》》 imshow(RGB_label);
9、測量圖像對象或區(qū)域的屬性(Regionprops,返回一個結(jié)構(gòu)數(shù)據(jù))
》》 graindata=regionprops(labeled,‘basic’)
graindata =
101x1 struct array with fields:
Area
Centroid
BoundingBox
》》 graindata(40).Area % 顯示矩陣中第40個元素的屬性
ans =
197
》》 graindata(40).BoundingBox,graindata(40).Centroid % 尋找最近的邊緣和中心點
ans =
82.5000 59.5000 24.0000 20.0000
ans =
95.4213 70.4924
》》 allgrains=[graindata.Area]; % 創(chuàng)建一個新的向量allgrains,其包含每個米粒的范圍
》》 whos allgrains
Name Size Bytes Class
allgrains 1x101 808 double array
Grand total is 101 elements using 808 bytes
》》 allgrains(51) % 相當(dāng)于整個矩陣的索引為51的屬性是多少,可見與原來得到的結(jié)果相同
ans =
140
》》 max(allgrains) % 獲取最大的米粒大小
ans =
404
》》 biggrain=find(allgrains==404) % 使用find命令返回這個最大尺寸米粒的標(biāo)記號
biggrain =
59
》》 mean(allgrains) % 獲取米粒的平均大小
ans =
175.0396
10、繪制包含30個柱的直方圖來說明米粒大小的分布情況
》》 hist(allgrains,30)
米粒大小分布柱狀圖
以上就是小編為大家?guī)淼年P(guān)于Matlab圖像處理的基本操作,多次使用后你會發(fā)現(xiàn)這些方法在使用Matlab的過程中很實用,并且使用起來非常簡單。希望對大家會有幫助!
關(guān)于我們 廣告服務(wù) 手機(jī)版 投訴文章:435 226 40@qq.com
Copyright (C) 1999-2020 www.w4vfr.cn 愛好者日報網(wǎng) 版權(quán)所有 聯(lián)系網(wǎng)站:435 226 40@qq.com