博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[2018/11/13]图像处理
阅读量:6446 次
发布时间:2019-06-23

本文共 1914 字,大约阅读时间需要 6 分钟。

今晚图像处理课.

我已经把Matlab当作PhotoShop来学了, 看看能把我的照片处理成什么样子.

上节课学了8.6节图像分割

今天学习8.6节二值图像处理

 

图像的边沿不太光滑的时候可以使用该方法处理边缘.

腐蚀可以把连在一起的图片分开.

 

腐蚀的代码:

originalBW = imread('circles.png');se = strel('disk', 10);erodedBW = imerode(originalBW, se);imshow(originalBW), figure, imshow(erodedBW)

结果:

通过腐蚀之后, 可以数清楚图片中有多少个圆形.

 

膨胀的代码:

bw = imread('text.png');se = strel('line',5,90);bw2 = imdilate(bw, se);imshow(bw), title('Original')figure, imshow(bw2), title('Dilated')

结果:

膨胀之后使得字体变形.

这是我的头像膨胀后的样子, 果然很膨胀

 

8.6.2 开运算和闭运算

开运算: 先腐蚀再膨胀, 消除图像的细节.

比运算: 先膨胀再腐蚀, 填充物体内部的细小的空洞.

 

开运算结果:

闭运算结果:

 

 

填洞的操作, 将图片内部的黑色的空洞处理掉才能够方便的对图像进行后续的处理.

代码:

I=imread('coins.png');BW4 = im2bw(I);BW5 = imfill(BW4, 'holes');imshow(BW4), figure, imshow(BW5)

填洞后的结果, 可以看出每个圆圈的外表都十分的光滑, 内部的黑色的洞都没有了.

 

 

10.4.1 简单的区域描述

regionprops()函数

常见的拓扑结构:

孔洞

 

10.4.3: 形状的描述

1、和圆形有多接近,方法: 面积/周长

2、偏心度

 

案例: 测试图片的重心, 从而可以判断有多少个硬币:

上代码:

clearclc;close all;I=imread('coins.png');BW4 = im2bw(I);BW5 = imfill(BW4, 'holes');imshow(BW4), figure, imshow(BW5)s = regionprops(BW5, 'centroid');centroids = cat(1, s.Centroid);[m, n]=size(centroids);imshow(I)hold onplot(centroids(:, 1), centroids(:,2), 'b*')hold offm

计算出总数:

 

综合的例子, 不仅可以计算有多少个硬币, 同时可以计算出金额总和:

上代码:

%读取图像RGB = imread('coins.jpg');%I=rgb2gray(RGB);I=RGB;%阈值分割图像threshold = graythresh(I);bw = im2bw(I,threshold);bw=~bw;bw = bwareaopen(bw,100);se = strel('disk',2);bw = imclose(bw,se);bw = imfill(bw,'holes');[B,L] = bwboundaries(bw,'noholes');stats = regionprops(L,'Area','Centroid');array=zeros(1,length(B));%求硬币的直径for k = 1:length(B)  boundary = B{k};  delta_sq = diff(boundary).^2;      perimeter = sum(sqrt(sum(delta_sq,2)));  radius=perimeter/(2*pi);  array(k)=radius;end%分类B=sort(array);row=length(B);maxcoin=max(B);mincoin=min(B);for i=1:row    if(abs(B(i)-maxcoin)<2)        B(i)=10;    elseif (abs(B(i)-mincoin)<2)            B(i)=1;    else            B(i) = 5;    endend%输出钱数c=sum(B)

结果:

 

转载于:https://www.cnblogs.com/huangZ-H/p/9953969.html

你可能感兴趣的文章
移动web两款滑屏框架介绍
查看>>
==与===
查看>>
Ubuntu解除"输入密码以解锁密钥环”
查看>>
P3162 [CQOI2012]组装
查看>>
理解Docker :Docker 网络
查看>>
java int和String类型之间的相互转换
查看>>
通过Application存取公共数据比如登录信息等..
查看>>
U盘中毒了?教你如何删除System Volume Information这个顽固文件夹
查看>>
intellij maven配置与使用
查看>>
CentOS安装ntfs-3g
查看>>
SpringMVC文件下载与JSON格式
查看>>
postgre查询表和记录数
查看>>
Q:图像太大,在opencv上显示不完全
查看>>
Python实现文件备份
查看>>
ubuntu -redis
查看>>
[转]c++ 结构体和类的区别
查看>>
修正锚点跳转位置 避免头部fixed固定部分遮挡
查看>>
Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!
查看>>
linux下ping不通的解决方法
查看>>
关于大型网站技术演进的思考(三)---- 存储的瓶颈(3)
查看>>