思想:

以第一个为例,因为其他的就是调整了一些参数。具体思想并没有改变。

顶帽操作,与底帽操作:参考,轻点

高帽变换和低帽变换是数学形态学中重要的运算形式,有形态学中最基本的运算如膨胀、腐蚀组合实现。

高帽变换是通过利用原始图像与原始图像开操作的结果图像进行图像减操作实现的;

而低帽变换是通过原始图像闭操作的结果图像与原始图像进行图像减操作实现的。

高帽变换具有高通滤波的特性,适用于处理具有暗背景、亮物体特征的图像。

低帽变换能够检测图像中的谷值,适用于处理具有亮背景、暗物体特征的图像。


顶帽:取出亮度高的地方。

底帽:取出亮度低的地方。

车牌还是属于亮的呀。

利用:bw=im2bw(gth,0.6);分离出来比较亮的部分!

因为数字,边缘特征比较明显,我们就利用边缘函数edge()进行边缘提取处理。

先腐蚀【90度线条腐蚀】,然后再膨胀回来【注意别粘连在一起】

去除小对象:

关于find():https://blog.csdn.net/weixin_42859280/article/details/88765993

是彩色:

rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

不是彩色:

rr=f(min(r):max(r),min(c):max(c));
figure,imshow(rr)

rr=f(min(r):max(r),min(c):max(c),:);RGB图像就要这样切割。【具体为啥,我也不知道呀!】

其他四个,就不说啦。原理都一样,具体做法大同小异啦。

car1代码:

clear,clc,close all;
f=imread('c1.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',18));
figure,imshow(gth)bw=im2bw(gth,0.6);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',22));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

car1结果:

car2代码:

clear,clc,close all;
f=imread('c2.jpg');
imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',12));
figure,imshow(gth)
bw=im2bw(gth,0.2);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);
bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',25));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

car2结果:

car3代码:

clear,clc,close all;
f=imread('c3.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',12));
figure,imshow(gth)
bw=im2bw(gth,0.4);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',20));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,10000);
figure,imshow(bwao);[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

car3结果:

car4代码:

clear,clc,close all;
f=imread('c4.jpg');figure,imshow(f);
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',6));
figure,imshow(gth);bw=im2bw(gth,0.3);figure,imshow(bw);
bwao=bwareaopen(bw,20);
figure,imshow(cat(2,bw,bwao));bwedge=edge(bwao);
figure,imshow(bwedge);bwao=bwareaopen(bwedge,20);
figure,imshow(cat(2,bwedge,bwao));bwerode=imerode(bwao,strel('line',5,90));
figure,imshow(bwerode);bwdilate=imdilate(bwerode,strel('disk',25));
figure,imshow(bwdilate);bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

car4结果:

car5代码:

clear,clc,close all;
f=imread('c5.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imbothat(g,strel('disk',18));
figure,imshow(gth)% gg=g-gth;
% figure,imshow(gg);bw=im2bw(gth,0.4);
figure,imshow(bw);bwedge=edge(bw);
figure,imshow(bwedge);bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',30));
figure,imshow(bwdilate);bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
bwao1=bwareaopen(bwao,40000);
figure,imshow(bwao1);
bwao2=bwao-bwao1;
figure,imshow(bwao2);
[r,c]=find(bwao2);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)

car5结果:

OK!

我的matlab5个车牌_顶帽_底帽_边缘_腐蚀相关推荐

  1. OpenCV(九)形态学操作4--礼帽与黑帽(顶帽与底帽)

    目录 一.顶帽运算(礼帽) 二.底帽运算(黑帽) 三.底帽运算应用(二值图像底帽运算) 1.原图转灰度图,再转二值图像 2.灰度图底帽处理 3.二值图闭运算 代码 总代码 参考资料 一.顶帽运算(礼帽 ...

  2. 灰度图像--形态学处理:腐蚀、膨胀、开操作、闭操作、顶帽、底帽等

    学习DIP第16天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

  3. 8、灰度图的腐蚀、膨胀、开闭运算、顶帽底帽

    1. 灰度图的腐蚀 用结构元素的中心点,从左到右从上到下,依次扫描灰度图的像素点,图片上该像素点的值取为结构元素所覆盖区域中像素点的 最小值,扫描一遍后会得到一张新图,就是原图的腐蚀图. 用该结构元素 ...

  4. opencv 膨胀_【3】OpenCV图像处理模块(5)更多的形态学变换(开、闭、形态梯度、顶帽、黑帽)...

    形态学变换有多种类型,上一节展示了最基本的腐蚀和膨胀.本节使用OpenCV提供的 cv::morphologyEx()函数实现多种形态学变换,如开运算.闭运算.形态学梯度.顶帽变换.黑帽变换等. 理论 ...

  5. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  6. 【通刷】_晶晨S905L3A、S905L3AB芯片_安卓9.0_AI语音_完美线刷固件包

    [通刷]_晶晨S905L3A.S905L3AB芯片_安卓9.0_AI语音_完美线刷固件包 固件特点: 1.修改dns,三网通用: 2.开放原厂固件屏蔽的市场安装和u盘安装apk: 3.无开机广告,无系 ...

  7. java项目_第171期ssm房屋租赁系统_计算机毕业设计

    java项目_第171期ssm房屋租赁系统_计算机毕业设计 [源码请到下载专栏下载] 今天分享的项目是<ssm房屋租赁系统> 该项目分为2个角色,管理员和用户. 用户可以浏览前台,查看房屋 ...

  8. 单机大天使服务器端修改商店,《大天使之剑h5》变态单机版最新开服_无限钻石打造最强阵容_满V公益私服...

    原标题:<大天使之剑h5>变态单机版最新开服_无限钻石打造最强阵容_满V公益私服 <大天使之剑>www.74uw.com 要想玩好一个游戏,开局是非常重要的,只有少走点弯路,才 ...

  9. 查询计算机系学生的详细记录,实验三_数据库的简单查询和连接_.doc

    实验三_数据库的简单查询和连接_ 实验三 数据库的简单查询和连接查询 实验目的及要求 掌握SELECT语句的基本语法: 熟练掌握表的数据简单查询.数据排序: 熟练掌握表的连接查询的表示: 掌握等值连接 ...

最新文章

  1. OpenCV | OpenCV:sift,SURF 特征提取
  2. SQL SERVER 2005 同步复制技术
  3. python基础教程第四版-python基础教程第4版pdf
  4. 小森生活一直服务器维护,《小森生活》怎么处理断线黑屏的问题 连接不上服务器解决办法...
  5. 详解Java中Map用法
  6. 哇靠靠,这也行?零基础DIY无人驾驶小车(三)
  7. vb.net中递归退到最外层_数组中的逆序对
  8. matlab火焰测温源程序,一种火焰测温方法与流程
  9. 12bit的图像如何向8bit转化_干货分享 | 如何鉴别Western Blot图像的真实性?
  10. idea shell 使用linux_Linux 基础操作
  11. Centos配置github
  12. 面试题:高速PCB一般布局、布线原则
  13. 二氯甲烷废气处理吸附工艺
  14. 以太网的分层架构_工业以太网中层次拓扑结构对网络性能的影响
  15. 优化vue打包chunk-vendors.js 过大
  16. 磁力链接方式下载完全攻略
  17. 常见的HTTP状态码以及代表的意义
  18. BT 面板控制命令 宝塔 Linux 常用命令收集整理
  19. 关于srand()与rand()函数的理解-----必看系列
  20. 利用线性布局和相对布局实现一个简单的页面

热门文章

  1. 蚂蚁金服提新概率图模型GLN,正确率提升8.2%,具备可解释性 | NeurIPS 2019
  2. 聊聊抖音、奈飞、Twitch、大疆、快手、B站的多媒体关键技术
  3. 你和人工智能的对话,正在被人工收听
  4. 说出来你可能不信,现在酒厂都在招算法工程师
  5. 解密Kernel:为什么适用任何机器学习算法?
  6. 驾乘 AI 技术发展浪潮,全球最大中文 IT 社区 CSDN 宣布战略升级为 AI 社区
  7. SpringBoot 那些天生自带 Buff 的工具类,你用过几个?
  8. 性能优化之使用LongAdder替换AtomicLong
  9. 为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?
  10. SpringBoot 三招组合拳,手把手教你打出优雅的后端接口