Matlab数字图像处理基础【10】
来源:互联网 发布:淘宝店铺怎么取名 编辑:程序博客网 时间:2024/05/01 02:25
第六章 图像分割
实例:使用区域生长算法实现图像分割
clear;clc;close all;%读入图像I = imread('shape.jpg');I = double(I);%设定阈值,用来衡量像素点灰度之间的相似性T = 10;%用户选择种子点生成方式[sel,ok]=listdlg('liststring',{'按照灰度级设定种子','选点设定种子'},...?? 'listsize',[300 200],'OkString','确定','CancelString','取消',...?? 'promptstring','种子生成方式','name','选择种子生成方式','selectionmode','single');%使用灰度级设定种子点if sel == 1 %用户指定灰度级 answer = inputdlg('请输入灰度级:'); subplot(2,2,1),imshow(I, []),title('原图像'); %获取用户的输入并转换成double类型 S = str2double(answer{1,1}); %原图中所有灰度级为S的点都被选定为种子,种子位置保存在SI中 %SI是和原图规模相同的矩阵,有种子的位置其值为1,否则为0 SI = I == S; %S1中保存的是种子点的灰度值 S1 = S; subplot(2,2,2),imshow(SI),title('种子点分布');else %用户用鼠标左键点击选取种子点,选取结束后使用回车键进行下一步操作 %使用鼠标左键在原图上点击以选取种子点,可以选择多个点,选择结束后按回车键进行下一步 if(exist('x','var') == 0 && exist('y','var') == 0) subplot(2,2,1),imshow(I, []),title('原图像'); hold on; [x_list, y_list]=getpts; [m, n] = size(I); S = zeros(m, n); subplot(2,2,2),imshow(I, []),title('种子点分布'); hold on; for i = 1:length(x_list) %依次获取用户点击的点的坐标 x = round(x_list(i)); y = round(y_list(i)); %把种子点的位置保存在矩阵S中,横坐标对应矩阵的列数,纵坐标对应矩阵的行数 S(y, x) = 1; plot(x, y, 'r*'); end end SI = bwmorph(S, 'shrink', Inf); %获取种子点在原图中的位置 J = find(SI); %在S1中保存种子点的灰度信息 S1 = I(J); %subplot(2,2,2),imshow(SI),title('种子点分布');end%TI保存所有灰度和种子灰度值差异小于阈值的点的位置TI = zeros(size(I));%有几个种子灰度值,进行几次循环判定for K = 1:length(S1) %获取当前种子灰度值 seedvalue = S1(K); %S中保存所有灰度值和当前种子灰度值的差异小于阈值的点的位置 %矩阵S和原图规模相同,原图中符合灰度值阈值判定的点在S的相应位置保存‘1’值,否则为‘0’值 S = abs(I - seedvalue) <= T; %将当前结果汇总到TI中 TI = TI | S;end%依据种子点位置SI和所有通过灰度级阈值筛选的点集TI进行形态学重建%说明区域生长算法在考虑灰度值信息的同时也考虑了位置信息,把所有通过灰度级阈值筛选的点和种子点的位置进行比较,筛选通过灰度级阈值筛选的点,从而得到最终分割结果[I1, NR] = bwlabel(imreconstruct(SI, TI));subplot(2,2,3),imshow(TI),title('通过阈值测试的图像');subplot(2,2,4),imshow(I1),title('分割结果');
实验结果-使用灰度值设定种子点:
实验结果-人工选取指定种子点:
0 0
- Matlab数字图像处理基础【10】
- Matlab数字图像处理基础
- 数字图像处理matlab基础操作
- Matlab数字图像处理基础【1】
- Matlab数字图像处理基础【2】
- Matlab数字图像处理基础【3】
- Matlab数字图像处理基础【4】
- Matlab数字图像处理基础【5】
- Matlab数字图像处理基础【8】
- Matlab数字图像处理基础【9】
- Matlab数字图像处理基础【11】
- Matlab数字图像处理基础【12】
- Matlab数字图像处理的基础
- matlab 最基础的数字图像处理
- matlab 最基础的数字图像处理 .
- Matlab数字图像处理基础:图像采样
- 数字图像处理MATLAB基础中的一些新发现
- matlab数字图像/视频处理基础 第一篇
- 时间字符串转Timestamp时间戳
- 用户对列表实现自定义排序实现方案
- linux:安装redis并开启远程访问
- Docker学习(10)------创建Docker私有镜像库
- 安卓重写系统返回键,以及如何监听弹出框的系统返回键
- Matlab数字图像处理基础【10】
- solr配置及使用
- 雷布斯都得服!~解决MIUI下ContentProvider空指针,无法获取相册图片的工具
- ionic2 APP退出事件
- maven Spring 4.2+SpringMVC+dubbo解决TypeProxyInvocationHandler.invoke(SerializableTypeWrapper.java:239
- 类例1
- 用stl的中序遍历和层次遍历二叉树
- 视觉SLAM中的数学基础 第三篇 李群与李代数
- 06-进程控制理论