Matlab(2):图像分割
写在开头
这是博主的图像作业之一
本着熟悉知识+经验分享的精神而作,如果有任何疑问可以联系博主,相互学习。
文章材料部分(图像)来自互联网,如有侵权请联系博主删除!
WX公众号:小杂货铺9527,给你更多惊喜!
图像分割
总体目的
按照一定规律将图像或景物划分为多个子集
定位目标在图中的位置和范围
基本策略
本文主要介绍基于灰度的分割方法,依据不同区域灰度值的不连续性进行分割,其实就可以二分类或多分类方法进行处理了。
主要算法
基于阈值的分割方法
基于边缘的分割方法
基于区域的分割方法
基于数学形态学的分割方法
基于特定理论的分割方法
(聚类分析、小波变换、模糊集理论、基因编码)
阈值方法—直方图法
基本思想
通过建立图像的灰度直方图,选择两峰之间的谷底对应的灰度值作为阈值,可以处理背景颜色单一的图片,对复杂图片无能为力。
也就是这样
数学表达式
g ( x , y ) = { 255 , f ( x , y ) ≥ T 0 , f ( x , y ) < T g(x,y)=\begin{cases} 255,\quad f(x,y)\ge T \\ 0,\qquad f(x,y)\lt T \end{cases} g(x,y)={ 255,f(x,y)≥T0,f(x,y)<T
实验用图
Matlab代码
clc;
clear;
data1 = imread('cs0001.jpg'); %记得用自己的图片名
data = data1;
gdata1 = (0.299*data1(:,:,1)+0.587*data1(:,:,2)+0.114*data1(:,:,3));
gdata = gdata1;
[width,height ] = size(gdata1);
elements = zeros(1,255);
for i = 1:width
for j = 1:height
elements(1,round(gdata1(i,j))+1) = elements(1,round(gdata1(i,j))+1) + 1;
end
end
x = 1:255;
y = elements;
plot