该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

又下了一个

%{

如果图像中的目标物体是连在一起的,则分割起来会更困难,分水岭算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一副“地形图”,其中亮度比较强的地区像素值较大,而比较暗的地区像素比较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。

步骤:

1.读取图像

2.求取图像的边界,在此基础上可直接应用分水岭分割算法,但效果不佳;

3.对图像的前景和背景进行标记,其中每个对象内部的前景像素都是相连的,背景里面的每个像素值都不属于任何目标物体;

4.计算分割函数,应用分水岭分割算法的实现

注:直接用分水岭分割算法效果并不好,如果在图像中对前景和背景进行标注区别,再应用分水岭算法会取得较好的分割效果。

例 步骤:

1.读取图像并求取图像的边界。

%}

rgb = imread('355.jpg');%读取原图像

I = rgb2gray(rgb);%转化为灰度图像

figure; subplot(121)%显示灰度图像

imshow(I)

text(732,501,'Image courtesy of Corel',...

'FontSize',7,'HorizontalAlignment','right')

hy = fspecial('sobel');%sobel算子

hx = hy';

Iy = imfilter(double(I), hy, 'replicate');%滤波求y方向边缘

Ix = imfilter(double(I), hx, 'replicate');%滤波求x方向边缘

gradmag = sqrt(Ix.^2 + Iy.^2);%求摸

subplot(122); imshow(gradmag,[]), %显示梯度

title('Gradient magnitude (gradmag)')

%2. 直接使用梯度模值进行分水岭算法:(往往会存在过的分割的情况,效果不好)

L = watershed(gradmag);%直接应用分水岭算法

Lrgb = label2rgb(L);%转化为彩色图像

figure; imshow(Lrgb), %显示分割后的图像

title('Watershed transform of gradient magnitude (Lrgb)')

%3.分别对前景和背景进行标记:本例中使用形态学重建技术对前景对象进行标记,首先使用开操作,开操作之后可以去掉一些很小的目标。

se = strel('disk', 20);%圆形结构元素

Io = imopen(I, se);%形态学开操作

figure; subplot(121)

imshow(Io), %显示执行开操作后的图像

title('Opening (Io)')

Ie = imerode(I, se);%对图像进行腐蚀

Iobr = imreconstruct(Ie, I);%形态学重建

subplot(122); imshow(Iobr), %显示重建后的图像

title('Opening-by-reconstruction (Iobr)')

Ioc = imclose(Io, se);%形态学关操作

figure; subplot(121)

imshow(Ioc), %显示关操作后的图像

title('Opening-closing (Ioc)')

Iobrd = imdilate(Iobr, se);%对图像进行膨胀

Iobrcbr = imreconstruct(imcomplement(Iobrd), ...

imcomplement(Iobr));%形态学重建

Iobrcbr = imcomplement(Iobrcbr);%图像求反

subplot(122); imshow(Iobrcbr), %显示重建求反后的图像

title('Opening-closing by reconstruction (Iobrcbr)')

fgm = imregionalmax(Iobrcbr);%局部极大值

figure; imshow(fgm), %显示重建后局部极大值图像

title('Regional maxima of opening-closing by reconstruction (fgm)')

I2 = I;

I2(fgm) = 255;%局部极大值处像素值设为255

figure; imshow(I2), %在原图上显示极大值区域

title('Regional maxima superimposed on original image (I2)')

se2 = strel(ones(5,5));%结构元素

fgm2 = imclose(fgm, se2);%关操作

fgm3 = imerode(fgm2, se2);%腐蚀

fgm4 = bwareaopen(fgm3, 20);%开操作

I3 = I;

I3(fgm4) = 255;%前景处设置为255

figure; subplot(121)

imshow(I3)%显示修改后的极大值区域

title('Modified regional maxima')

bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%转化为二值图像

subplot(122); imshow(bw), %显示二值图像

title('Thresholded opening-closing by reconstruction')

%4. 进行分水岭变换并显示:

D = bwdist(bw);%计算距离

DL = watershed(D);%分水岭变换

bgm = DL == 0;%求取分割边界

figure; imshow(bgm), %显示分割后的边界

title('Watershed ridge lines (bgm)')

gradmag2 = imimposemin(gradmag, bgm | fgm4);%置最小值

L = watershed(gradmag2);%分水岭变换

I4 = I;

I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;%前景及边界处置255

figure; subplot(121)

imshow(I4)%突出前景及边界

title('Markers and object boundaries')

Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');%转化为伪彩色图像

subplot(122); imshow(Lrgb)%显示伪彩色图像

title('Colored watershed label matrix')

figure; imshow(I),

hold on

himage = imshow(Lrgb);%在原图上显示伪彩色图像

set(himage, 'AlphaData', 0.3);

title('Lrgb superimposed transparently on original image')

matlab水果图片,matlab数字图像处理-----------------水果识别相关推荐

  1. 精通Matlab数字图像处理与识别nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;

    文章目录 1. 数字图像处理与识别 1.1数字图像 1.2 数字图像处理与识别 1.3 数字图像处理的预备知识 1.4 基本的图像操作 2. MATLAB基础 2.1 常用命令 2.2 矩阵 2.3 ...

  2. 数字图像处理——车牌识别(matlab)

    本次大报告利用MATLAB函数功能,设计和实现了一个车牌识别系统.车牌识别系统的基本原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再对牌照进行搜索.检测.定位,并分割出包含牌照字符 ...

  3. 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

    本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...

  4. 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.2 数字图像处理与识别...

    本节书摘来自异步社区出版社<数字图像处理与机器视觉--Visual C++与Matlab实现>一书中的第0章,第0.2节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区 ...

  5. matlab武汉加油,[00]数字图像处理-matlab速成

    原本听的是mooc武汉大学的数字图像处理课程,但是无奈老师读ppt的能力太强,不太适应,后面的课程对于实验方面的要求甚低,无奈之下到处找课程,终于找到了一个适合自己的教程<王伟强-数字图像处理& ...

  6. 基于MATLAB的GUI界面数字图像处理系统

    目录 实验一 MATLAB数字图像处理初步 实验二 图像的代数运算 实验三 图像增强-空间滤波 实验四 图像分割 实验一 MATLAB数字图像处理初步 一.实验目的与要求 1.熟悉及掌握在MATLAB ...

  7. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  8. matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)

    这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助. 我还写了一套<数字图像处理>(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~ ...

  9. 沃尔什哈达玛变换Matlab,哈达玛变换矩阵-数字图像处理.ppt

    哈达玛变换矩阵-数字图像处理 3.1 二维离散傅里叶变换(DFT) 3.1.1 二维连续傅里叶变换 二维连续函数 f (x, y)的傅里叶变换定义如下: 设 是独立变量 的函数,且在 上绝对可积,则定 ...

  10. matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法

    [实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │   ├── 00.JPG │   ...

最新文章

  1. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)
  2. PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
  3. matlab 高斯一阶导,将Matlab高斯导数转换为Opencv
  4. Java线程的生命周期及线程的几种状态
  5. 过程或函数的副作用是_Python函数和函数式编程(两万字长文警告!一文彻底搞定函数,建议收藏!)...
  6. Tensorflow Lite之编译生成tflite文件
  7. python多级菜单查询简化版
  8. php实现多进程、多线程
  9. java克鲁斯卡尔算法_Java语言基于无向有权图实现克鲁斯卡尔算法代码示例
  10. 【BZOJ3551】Peaks加强版,主席树+kruskal重构+dfs序+倍增思想
  11. java开发http协议接口_java开发接口利用http协议传输数据
  12. 科沃斯的技术跃进:交互与场景才是未来
  13. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
  14. Redis可视化客户端管理及监控工具TreeNMS
  15. win7无线手柄测试软件,北通战戟手柄驱动程序 BTP-2118(支持xp,visia,win7等)
  16. 搜集百度关键词的相关网站、生成词云
  17. C++类内静态成员的内存释放问题
  18. Verilog语言学习
  19. FreeXploiT HTML(Hacker Technology Mad Lead)
  20. 度量空间的完备化定理

热门文章

  1. JQuery中append(function(index,html)),appendTo(),after(function(index,html)),clone()方法
  2. 上台阶问题:一个人上台阶,一次可以走1、2、3步,问n个台阶有多少种走法?
  3. 学python编程,自学好还是应该报个培训班呢?
  4. EXCEL VBA 备忘录
  5. rtthread + STM32F407VE + esp8266 +SD卡 从网络下载文件存到SD卡中
  6. 烽火移动设备管理:企业安全管理无处遁形
  7. 对象布局(JOL)、分配过程以及访问定位
  8. matlab电压灵敏度矩阵,一种基于线性化潮流的配电网灵敏度计算方法与流程
  9. android ios动态模糊效果,iOS实现模糊效果的几种方法
  10. 文科生也能看懂,什么是熵