python将灰度图像二值化,图像的二值化处理matlab

  python将灰度图像二值化,图像的二值化处理matlab

  欢迎来到“hxdmjpython”,发现更多“有趣”

  在本文中,您将学习如何使用NumPy对图像进行二值化。当然,OpenCV用于读取灰度和RGB格式的图像。

  要理解二进制是什么,二进制是由两个东西组成的。在计算机术语中,二进制文件只有0和1。如果我们用图片来连接同样的东西,那么在黑白图片中:

  0表示黑色。

  1表示白色。

  在学习图像处理的初级阶段,我们认为灰度图像就是二值图像。虽然不是。但是慢慢的,当我们开始谈论这个话题的时候,我才意识到我们错了多少。然后,你将学习如何使用和不使用库。NumPy用于矩阵运算,但是使用循环规则将防止程序变慢。)。它还使用Matplotlib来绘制结果。

  RGB 和灰度概述

  在灰度图像中,二值化的效果非常好。彩色(RGB)图像的问题在于,每个像素是一个表示三个唯一值的向量:红色、绿色和蓝色。

  典型的灰度图像矩阵如下所示。

  数组([ 162,162,162,170,155,128],[162,162,155,128],[162,162,162,170] 55,104,105,170)

  array ([ 226,137,125 ]、[ 200,99,90 ]、[ 226,137,125 ]、[ 200,99,90 ]、[ 226,137 ]).[ 177,62,79 ]、[ 82,22,57 ]、[ 185,74,81 ]、[ 82,22,57 ]、[ 185,74,81 ]、数据类型

  R 矩阵

  数组([ 226,226,223,230,221,200 ],[ 226,226,223,230,221,200 ],[ 226,226,223,].

  array ([ 137,137,137,148,130,99 ],[ 137,137,137,137,137,137,137,137,99 ]).

  数组([ 125,125,1 ])

  33, 122, 110, 90], [125, 125, 133, 122, 110, 90], [125, 125, 133, 122, 110, 90], [ 60, 60, 58, 84, 76, 79], [ 57, 57, 62, 79, 81, 81], [57, 57, 62,79,81,81]],dtype=uint8)无论我们对灰度图像做什么,都需要对RGB图像做同样的计算,但是我们需要将R,G,B通道分离3次,最后合并成一个正确的。

  编程时间

  我们使用的主要软件库有:

  NumPy

  Matplotlib

  开放计算机视觉

  导入软件库

  将numpy作为npimport从matplotlib导入JSON将pyplot作为plt读取图片导入

  def read_this(image_file,gray _ scale=False):image _ src=cv2 . im read(image _ file)if gray _ scale:image _ src=cv2 . CVT color(image _ src,2 .color _ bgr 2 gray)else:image _ src=cv2。cvtcolor (image _ src,cv2。color _ bgr2rgb) return image _ src上述函数读取灰度或rgb的图像,并返回图像矩阵。

  实现代码

  为了将图像转换成二值图像,我们可以简单地使用cv2库中提供的threshold()方法。这样不管图像是什么(灰度还是RGB)都转换成二进制。使用时需要四个参数。

  Src:它基本上是一个图像矩阵。

  Thresh: threshold,根据该值为像素赋予新值。如果像素小于这个值,我们会将这些像素重新赋值为255;否则,像素将被重置为0。

  Maxval:图像可以包含的最大像素值(255)

  类型:给定的阈值类型,根据该类型计算运算。

  之后,我们将在下面的函数中绘制结果以查看变化。

  def binary ize _ lib(image _ file,thresh_val=127,with_plot=False,gray _ scale=False):image _ src=read _ this(image _ file=image _ file,gray_scale=gray_scale) th,image _ b=cv2 . threshold(src=image _ src,thresh=thresh_val,maxval=255,type=cv2。THRESH _ BINARY)if with _ plot:Cmap _ val=None if not gray _ scale else gray fig,(ax1,ax2)=plt.subplots(nrows=1,ncols=2,figsize=(10,20))ax1 . axis( off )ax1 . title . set _ text( Original )ax2 . title . set _ text( off )ax1 . im show(image _ src,Cmap=cmap _ val) ax2.imshow (image

  binary ize _ lib(image _ file= Lena _ original。png ,with_plot=True)

  binary ize _ lib(image _ file= Lena _ original。png ,with_plot=True,gray_scale=True)

  现在我们已经看到了原始图像和二进制图像的结果,很明显,使用库中提供的函数编写的代码对这两者都适用。是时候让我们从头开始编写如何使用NumPy对图像进行二值化。

  从零开始的代码实现

  首先,我们将编写一个函数,将小于指定阈值的像素值重新赋值为255。

  通过这样做,我们可以看到下面这样的东西:

  def convert_binary(image_matrix,thresh _ val):白色=255黑色=0 initial_conv=NP。其中((image_matrix=thresh _ val),image_matrix,white)final _ conv=NP。其中((initial _ conv thresh _ val),initial _ conv,黑)return final_conv我们将上面的函数通过分离r、g和b值进行三次调用,最后将它们合并得到二值化图像。一旦这样做,我们就可以像以前那样绘制结果。

  def binary size _ this(image _ file,thresh_val=127,with_plot=False,gray _ scale=False):image _ src=read _ this(image _ file=image _ file,gray_scale=gray_scale)如果不是gray_scale: cmap_val=None r_img,g_img,b_img=image_src[:1],image_src[:2]r _ b=convert _ binary(image _ matrix我们只是使用NumPy创建了我们的二进制化代码:

  二进制化_ this(image _ file= Lena _ original。png ,with_plot=True)

  二进制化_ this(image _ file= Lena _ original。png ,with_plot=True,gray_scale=True)

  至此,我们发现使用NumPy从零编写的结果与我们调用库函数编写的代码得到的结果非常相似。

   END

  快乐生活

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python将字符串转换成日期,python 字符串转换为日期
  • python将字符串转换成日期,python 字符串转换为日期,Python如何将字符串转换为日期
  • python将字符串转换为数字型,python中数字字符和数字值有何不同,如何转换
  • python将两个一维数组转化为二维数组,matlab把二维数组转为三维数组
  • python将文本转为数组,python读取txt文件为数组
  • python将一个正整数分解成质因数,用python分解质因数
  • python单位转换编程英寸厘米,python将8厘米转换为以英寸为单位的长度并输出
  • python将列表中指定元素修改,python 替换列表中的元素
  • Python将字符串分割,python中把字符串分割成单个字符
  • python将数字转换为日期,python excel写入日期变数字
  • Python读取文件名写入Excel,python将结果写入excel文件
  • 用python将字符串进行反转,python中字符串反转函数
  • python 数字类型和字符串类型的相互转换,python将字符串类型转换为数字
  • Python读取文件名写入Excel,python将数据写入excel指定单元格
  • python中将字符串转化为数字,Python将字符串转为数字
  • 留言与评论(共有 条评论)
       
    验证码: