Matlab圖像處理學習筆記(一):二值化、開操作、連通區域提取、重心、ROI


本博客主要記錄我學習運用matlab進行一些基本的圖像處理的一些筆記,如果有不當的地方,歡迎批評指正,一起學習,一起進步。

本篇是第一篇,只涉及到一些基本的操作,涉及到的知識點如下:

1、二值化

2、開操作

3、連通區域提取

4、連通區域的重心提取

5、BoundingBox提取

各操作背后的理論基礎,大都可以在岡薩雷斯的數字圖像處理中找到,而且matlab的幫助中會給出實現算法的論文出處。感興趣的朋友可以深入研究。

圖像處理,第一步一般是進行二值化,而二值化最常用的方法就是ostu方法。matlab可以用level=graythresh(src)直接獲取二值化的閾值。之后用im2bw二值化圖像。

處理圖像時經常運用到一些形態學圖像處理方法,而幸好matlab就為我們提供了強有力的形態學處理工具箱。本學習筆記運用到了開操作對圖像進行處理,可以消除一些噪點。

獲取連通區域之后,我們可能會想知道該區域的一些屬性(如重心、邊界框等),matlab的regionprops為我們提供了大量的屬性,只要一個命令就可搞定,regionprops。

本例程的code如下:

%function:
%     獲取感興趣區域,並進行提取、標記
%     源圖像位於E:\ProgramFiles\MATLAB\R2013b\toolbox\images\imdemos
%     具體路徑因個人電腦而異
%date:2015-1-7
%author:chenyanan

%清空變量,讀取圖像,並顯示其屬性
clear;close all
src = imread('images/rice.png');
whos,

%顯示原始圖像
figure('name','myapp'),
subplot(2,2,1),imshow(src),title('src')

%用ostu方法獲取二值化閾值,進行二值化並進行顯示
level=graythresh(src);
bw=im2bw(src,level);
subplot(2,2,2),imshow(bw),title('bw')

%運用開操作消去噪點
se = strel('disk',2);
openbw=imopen(bw,se);
subplot(2,2,3),imshow(openbw),title('open')

%獲取連通區域,並進行顯示
L = bwlabel(openbw,4);
RGB = label2rgb(L);
subplot(2,2,4),imshow(RGB),title('rgb')

%獲取區域的'basic'屬性, 'Area', 'Centroid', and 'BoundingBox' 
stats = regionprops(openbw, 'basic');
centroids = cat(1, stats.Centroid);
figure('name','regionprops'),
%繪制開操作之后的二值化圖像
imshow(openbw),title('centroids')  
hold on
%繪制重心
plot(centroids(:,1), centroids(:,2), 'b*'),
%繪制感興趣區域ROI
for i=1:size(stats)
     rectangle('Position',[stats(i).BoundingBox],'LineWidth',2,'LineStyle','--','EdgeColor','r'),
end
hold off

運行效果的圖片如下:







 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM