MATLAB从原图,灰度图,二值图,反白图,边缘检测

MATLAB数字图像处理是一件有趣的事情,对一张图像使用基于MATLAB的数字图像处理技术,甚至可以将一张图变为“线稿”(显然效果不太行)(一定程度上,效果当然不好,可以再使用PS或美图秀秀稍加处理嘛),话不多说,效果如此:

MATLAB从原图,灰度图,二值图,反白图,边缘检测_第1张图片
以上内容是本次所讲的MATLAB可以实现的关于数字图像处理的功能。

首先我们需要读取一张图片的文件。这在上一篇博客讲过:读取,剪裁一张图像。在此就略过

比如我们打开一个图像文件hpym.jpg,他的像素矩阵是三维的,包括二维的像素值和一个RGB维度

A0 = imread('hpym.jpg');

灰度化

然后把它转换成灰度图像,可以使用以下语句

A1 = rgb2gray(A0);

这样生成的图像就是原图片A0的灰度图像了,可以调用imshow(A1)展示观看你的图像了

二值化
转换成灰度图像之后,我们可以经一部把它变成二值图像,也就是黑白图像,没有灰度的渐变。简单的理解它的像素矩阵是二维的逻辑值,1和0,就是图像的像素非黑即白。
可以调用以下函数吧灰度图像转换成二值图像

level = graythresh(A1)
A2 = im2bw(A1, level)

这样生成的图像A2就是一个二值图像了,可以调用imshow(A2)展示观看你的图像了。至于为什么这么操作,以后细讲

边缘检测
接下来进行图像的边缘分割,来得到它的轮廓图。他需要一系列算法,他也有很多种算子可以作为分割的方法去分割。我们这里展示一下sobel算子的效果
首先读取一个二值图像A2,略
然后检测边缘,得到边缘图像

A3 = edge(A2, 'sobel')

这里第二个参数是边缘检测的算子,你还可以试一试roberts, canny,等等

反白化
这样的图像是白色的轮廓,黑色的背景。如果需要把白色和黑色互换一下,也就是反白操作,变成白底黑线。可以对A3进行如下操作

A4 = 255 - A3

这样得到的A4就是反白图像。这样就像一幅画一样了。无奈的是,边缘通常是不连续的,如果想更好看一些,就要进行后期的人工PS处理了

事实上每两幅不同的插画,处理起来难度也是不一样的,这个时候你可以做一些其他的操作,诸如顶帽变换,低帽变换,甚至滤波去噪等等操作,我这里只使用了我们能够完成本功能的基本操作罢

————ZKe

你可能感兴趣的:(MATLAB,数字图像处理,MATLAB)