EMGUCV AFORGE ACCORD三种图像处理库进行图像灰度化比较

EMGUCV是Opencv对应.NET框架下的版本,EMGUCV的安装也比较的方便,具体安装步骤就不一一说明了,大家可以从下面的链接去下载自己所需要的版本:

https://sourceforge.net/projects/emgucv/files/emgucv/ 说到图像处理方面的开源库。对于C++很多人都会想到Opencv、QT等开源库,而对于C#可能大家想到的只有EMGUCV了,其实对于C#而言, AFORGE ACCORD都是基于.net框架使用C#高级面向对象语言设计开发的专门为开发者和研究者学习和使用的开源图像处理类库,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,而ACCORD则是AFORGE 的扩展版本。 AFORGE下载链接:http://www.aforgenet.com/framework/downloads.html

今天我们使用三种开源进行图像灰度话处理。一副彩色图像具有R、G、B三个通道,如果我们对三通道依次进行处理会花费大量的时间,为了提高运行速度,则需要减少图像处理数量,因此我们需要将彩色图像转化为灰度图像。常采用灰度化方法有以下几种:
   1、平均值法
   f(x,y)=(R(x,y)+G(x,y)+B(x,y))/3;
   2、加权法
     f(x,y)=R(x,y)*0.3+G(x,y)*0.59+B(x,y)*0.11;
     3、最大值法
     该方法首先计算各个像素位置的三个分量的最大值,选取其中最大值作为灰度化的阈值
      f(x,y)=max(R(x,y)+G(x,y)+B(x,y));

灰度化介绍完毕,我们就采用三种开源库进行图像的灰度化吧。首先输入一张彩色图像,一般的选取比较有名的大美女图像,在图像处理界 ,肯定都知道的一位大美女就是lena,好了,不多说了 我们将lena作为原图进行灰度化,lena图如下所示:

opencvsharp emgucv_opencvsharp emgucv

首先我们使用EMGUCV进行图像处理:

话不多说,直接上代码,第一次写文章,只会复制粘贴。大家将就着看看吧。。。。。。。。EMGUCV使用也比较方便直接引用DLL就行了。EMGUCV里面的灰度化还是比较方便的,输入一个彩色图像之后直接一个Convert,额,其实我也不知道它这里面的灰度化算法是哪一种 ,还真研究过。。。。。只知道使用。。。尴尬0.0.。。

opencvsharp emgucv_灰度_02

Image<Bgr, byte>ImgInput1 ; OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { ImgInput1 = new Image<Bgr, byte>(ofd.FileName); pictureBox1.Image = ImgInput1.Bitmap; } Image<Gray, byte> grayImage = ImgInput1.Convert<Gray, byte>(); pictureBox2.Image = grayImage.Bitmap;

opencvsharp emgucv_Image_03

对于不常见的AFORGE大家很少使用,AFORGE使用其实和EMGUCV使用是一样的直接引用DLL。对于其灰度化算法更加不清楚,下面我们使用AFORGE对lena图像进行灰度化。

opencvsharp emgucv_Image_04

Bitmap bt;
 OpenFileDialog ofd = new OpenFileDialog();
 if (ofd.ShowDialog() == DialogResult.OK)
 {
 bt = new Bitmap(ofd.FileName);
 pictureBox1.Image = bt;
 }
 Grayscale grayfilter = new Grayscale(0.11, 0.59, 0.3);
 bt = grayfilter.Apply(bt);
 pictureBox2.Image = bt;

这就是AFORGE灰度化图像处理,aforge灰度化是Grayscale ,看着名字就知道是图像灰度化,该算子需要输入三个参数,其实就是前面所说的加权算法,但是对于AFORGE该算子的三个输入参数,可以随时改变。而对于ACCORD其实用法和AFORGE是一样的,再次就不在描述了。

opencvsharp emgucv_图像灰度化处理_05

好了,,,,图像灰度化就这样写完了。。。。好像也没写什么东西,,本人第一次写博客,只是使用了EMGUCV 以及AFORGE和ACOORD三种开源库,因此我就将这三种开源库进行对比。。。。