[2018/11/13]图像处理

今晚图像处理课.

我已经把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、偏心度

 

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

上代码:

clear
clc;
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 on
plot(centroids(:, 1), centroids(:,2), 'b*')
hold off
m

计算出总数:

 

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

上代码:

%读取图像
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;
    end
end
%输出钱数
c=sum(B)

结果:

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值