本博客主要記錄我學習運用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
運行效果的圖片以下: