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

运行效果的图片以下:





相关文章
相关标签/搜索