MATLAB数字图像处理 图像分割技术 迭代法
来源:互联网 发布:linux sys.h 编辑:程序博客网 时间:2024/05/21 19:36
本文为博主原创,转载请注明出处:
http://blog.sina.com.cn/s/blog_156532ba70102wmjf.html
迭代法首先选择一个近似阈值T,将图像分割成两部分R1和R2,计算区域R1和R2的均值μ1和μ2,选择新的分割阈值T = (μ1 + μ2)/2 ,重复上述步骤知道μ1和μ2(或T)不再变化为止。这里我已经将迭代法写成了函数,直接调用就可以了。函数源代码如下:
function [ TK ] = diedai( I ) % 图像分割之迭代法获取阈值 % 形参I为原始图像灰度图,返回值为阈值 I = imread('rice.jpg'); ZMAX = max(I);%取出最大灰度值 ZMIN = min(I);%取出最小灰度值 TK = (ZMAX+ZMIN)/2;%初始阈值 BCal = 1; iSize = size(I);%图像大小 while (BCal) %定义前景和背景数 iForeground = 0; iBackground = 0; %定义前景和背景灰度总和 ForegroundSUM = 0; BackgroundSUM = 0; for i = 1:iSize(1) for j = 1:iSize(2) tmp = I(i,j); if tmp >= TK %前景灰度值 iForeground = iForeground + 1; ForegroundSUM = ForegroundSUM + double(tmp); else iBackground = iBackground + 1; BackgroundSUM = BackgroundSUM + double(tmp); end end end %计算前景和背景的平均值 ZO = ForegroundSUM/iForeground; ZB = BackgroundSUM/iBackground; TKtemp = uint8((ZO + ZB)/2);%新的阈值 if TKtemp == TK BCal = 0; else TK = TKtemp; end %当阈值不再变化时,迭代结束 end disp(strcat('迭代后的阈值:',num2str(TK))); end 灰度图。
下面简单说下怎么调用,只有一点需要注意,迭代法操作对象为灰度矩阵,不是灰度图的要先转为灰度图。代码如下:
I1 = imread('rice.jpg'); I = rgb2gray(I1); TK = diedai(I); newI = imbinarize(I,double(TK/255));
我这里的‘rice.jpg’图片不是灰度图,所以就要先转为灰度图。
效果图我就不放了。图像分割的方法有很多,所以并不是所有的图都适合用迭代法来分割,有的图甚至效果还会非常差,所以想要获得好的分割效果只能不断尝试好的方法。所以,加油吧!我也是刚学,写的不好请见谅!
阅读全文
0 0
- MATLAB数字图像处理 图像分割技术 迭代法
- matlab数字图像/时评处理技术基础--图像处理工具箱简介
- 数字图像处理:9.图像分割
- 数字图像处理06(图像分割)
- 【图像处理】MATLAB:图像分割
- 数字图像处理图像增强技术
- 数字图像处理图像增强技术
- 数字图像处理-图像分割:Snake主动轮廓模型 Matlab代码及运行结果
- 数字图像处理之边缘检测,图像分割
- 数字图像处理—图像分割—分类
- 系统学习数字图像处理之图像分割
- 《数字图像处理》——图像分割概述
- Win8 Metro(C#)数字图像处理--2.54迭代法图像二值化
- 图像分割 处理 matlab源码
- [matlab图像处理] 阈值分割
- Matlab 图像分割 (阈值处理)
- Matlab数字图像处理基础:图像采样
- 【Matlab数字图像处理】第五章:图像复原
- 点击炮台建炮
- 关于在linux 下编译APK时,编译 AIDL文件问题
- sqlite3交叉编译环境配置
- redux-saga 实践总结
- CheckBox监听显示选中的条目数
- MATLAB数字图像处理 图像分割技术 迭代法
- 按键控制灯
- tcmalloc安装与使用
- WEB网站常见受攻击方式及解决办法
- Andorid 解决VideoView透明问题
- 在C++中使用sqlite3 api 一般步骤
- 洛谷 P1983 车站分级 解题报告
- Fluxion
- Java学习笔记(自选修课PPT)