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

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

本篇是第一篇,只涉及到一些基本的操做,涉及到的知識點以下:app

一、二值化工具

二、開操做學習

三、連通區域提取code

四、連通區域的重心提取圖片

五、BoundingBox提取博客

各操做背後的理論基礎,大均可以在岡薩雷斯的數字圖像處理中找到,並且matlab的幫助中會給出實現算法的論文出處。感興趣的朋友能夠深刻研究。it

圖像處理,第一步通常是進行二值化,而二值化最經常使用的方法就是ostu方法。matlab能夠用level=graythresh(src)直接獲取二值化的閾值。以後用im2bw二值化圖像。io

處理圖像時常常運用到一些形態學圖像處理方法,而幸虧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

運行效果的圖片以下:





相關文章
相關標籤/搜索