1、AForge学习笔记AForge学习笔记:1AForge.Imaging.Filters|AdaptiveSmoothing:图像平滑处理,用于对图像进行适度的平滑,再平滑噪声的条件下保留边缘效应,实现如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop0.jpg);Bitmap bt1 = bt.Clone(new Rectangle(new Point(0,0),bt.Size),bt.PixelFormat);pictureBox1.Image = bt;/ create filterAForge.Imaging.Filters.Adaptiv
2、eSmoothing filter = new AForge.Imaging.Filters.AdaptiveSmoothing();/ apply the filterfilter.ApplyInPlace(bt1);结果如下图所示。Add :将原始图像和叠置图像像素相加得到新图像,我们通过红色+黄色=橙色来展示运行结果:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);Bitmap bt1 = new Bitmap(C:UsersGAOXIANGDesktop2.jpg);/ 创建过滤器AForge.Imaging.Filters.Ad
3、d filter = new AForge.Imaging.Filters.Add(bt);/图像相加Bitmap resultImage = filter.Apply(bt1);运行结果如下图。AdditiveNoise:通俗的翻译,我们可以理解为添加剂噪声滤波器,在原始图像的像素中添加一个随机值,随机值由IRandomNumberGenerator生成,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);pictureBox1.Image = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);/ 创
4、建随机数组IRandomNumberGenerator generator = new UniformGenerator(new Range(-50, 50);/ 创建过滤器AForge.Imaging.Filters.AdditiveNoise filter = new AForge.Imaging.Filters.AdditiveNoise(generator);/ 图像处理filter.ApplyInPlace(bt);运行结果如下。BackwardQuadrilateralTransformation:后向四边形转换,可以实现将原始图像转换到目标图像的四边形区域当中,示例如下:Bitm
5、ap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);Bitmap bt1 = new Bitmap(C:UsersGAOXIANGDesktop2.jpg);/ 定义四边形角点List corners = new List();corners.Add(new IntPoint(99, 99);corners.Add(new IntPoint(156, 79);corners.Add(new IntPoint(184, 126);corners.Add(new IntPoint(122, 150);/ create filterAForge.Imagi
6、ng.Filters.BackwardQuadrilateralTransformation filter = new AForge.Imaging.Filters.BackwardQuadrilateralTransformation(bt, corners);/ apply the filterBitmap newImage = filter.Apply(bt1);运行结果:BayerDithering:基于Bayer 矩阵的图像有序抖动,实现如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);Bitmap bt1 = bt.Clo
7、ne(new Rectangle(new Point(0,0),bt.Size),PixelFormat.Format8bppIndexed);/ 创建过滤器AForge.Imaging.Filters.BayerDithering filter = new AForge.Imaging.Filters.BayerDithering();/ 图像过滤filter.ApplyInPlace(bt1);运行结果:BayerFilter:通过色彩传感器建立色彩矩阵将灰度图转为彩色图。Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop3.jpg);/Bitmap
8、 bt1 = bt.Clone(new Rectangle(new Point(0,0),bt.Size),PixelFormat.Format8bppIndexed);/ 生成过滤器BayerFilter filter = new BayerFilter();/ apply the filterBitmap rgbImage = filter.Apply(bt);运行结果:BilateralSmoothing:使用色彩和空间因子进行保存边缘效应,消除噪声的双向平滑。示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop2.jpg);/ creat
9、e filterAForge.Imaging.Filters.BilateralSmoothing filter = new AForge.Imaging.Filters.BilateralSmoothing();filter.KernelSize = 7;/空间因子filter.SpatialFactor = 10;/色彩因子filter.ColorFactor = 60;filter.ColorPower = 0.5;/ apply the filterfilter.ApplyInPlace(bt);运行结果:BlobsFiltering:将一定大小的对象剔除,示例如下:Bitmap bt
10、 = new Bitmap(C:UsersGAOXIANGDesktop1.bmp);/ 创建过滤器AForge.Imaging.Filters.BlobsFiltering filter = new AForge.Imaging.Filters.BlobsFiltering();/ 设置过滤条件(对象长、宽至少为70)filter.CoupledSizeFiltering = true;filter.MinWidth = 100;filter.MinHeight = 80;filter.ApplyInPlace(bt);运行结果:Blur:对图像实施模糊变换。BradleyLocalThre
11、sholding:局部阈值处理,当像素值比邻近窗体所有像素的均值低百分之t 时将该点取为黑,否者均为白。示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop2.jpg);AForge.Imaging.Filters.BradleyLocalThresholding filter = new AForge.Imaging.Filters.BradleyLocalThresholding();filter.ApplyInPlace(bt);运行结果:BrightnessCorrection :灰度矫正,若输入的矫正数p为正,则将输入图像灰度值范围变换
12、为【0,255-p】,输出范围为【p,255】,当为负时输入范围【-p,255】,输出范围【0,255-p】。CannyEdgeDetector:使用Canny边缘检测算子检测边缘,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);Bitmap bt1 = bt.Clone(new Rectangle(new Point(0, 0), bt.Size), System.Drawing.Imaging.PixelFormat.Format8bppIndexed);AForge.Imaging.Filters.CannyEdgeDet
13、ector filter = new AForge.Imaging.Filters.CannyEdgeDetector();filter.ApplyInPlace(bt1);运行结果:CanvasCrop,CanvasFill,CanvasMove:对特定区域进行色彩填充,或对图像进行整体移动。ChannelFiltering:对彩色图像RGB通道进行灰度过滤,在某以特定范围的至将被保留或去除,使用如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);AForge.Imaging.Filters.ChannelFiltering filt
14、er = new AForge.Imaging.Filters.ChannelFiltering();/ 确定通道过滤范围filter.Red = new IntRange(0, 255);filter.Green = new IntRange(100, 255);filter.Blue = new IntRange(100, 255);filter.ApplyInPlace(bt);运行结果:Closing:方法:对图像中的单个对象进行膨胀,在进行侵蚀,由于膨胀会使本来不相连的独立对象相互连接,使得即是侵蚀也依旧能保持对象的相连状态。ColorRemapping:与LevelsLinear不
15、同,ColorRemapping可以对图像进行非线性变换,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);byte map = new byte256;for (int i = 0; i 256; i+) mapi = (byte)Math.Min(255, Math.Pow(2, (double)i / 32);/ create filterAForge.Imaging.Filters.ColorRemapping filter = new AForge.Imaging.Filters.ColorRemapping(map,
16、map, map);/ apply the filterfilter.ApplyInPlace(bt);运行结果:Connectedcomponentslabeling:通过为不同对象去不同颜色来区别图像中的不同部分。ConservativeSmoothing:使用矩阵窗口在图像中搜索,将窗口中最小或最大值用平均值来代替以此消除噪声。Convolution :卷积操作,通过设置不同的卷积矩阵获得不同的图像处理效果,如下面示例:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);pictureBox1.Image = new Bitmap(C:
17、UsersGAOXIANGDesktop1.jpg);/ 定义卷积核int, kernel = -2, -1, 0 , -1, 1, 1 , 0, 1, 2 ;/创建过滤器AForge.Imaging.Filters.Convolution filter = new AForge.Imaging.Filters.Convolution(kernel);filter.ApplyInPlace(bt);运行结果:CornersMarker :通过角点算法探测并高亮显示角点,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.bmp);/ crea
18、te corner detectors instanceSusanCornersDetector scd = new SusanCornersDetector();/ create corner maker filterAForge.Imaging.Filters.CornersMarker filter = new AForge.Imaging.Filters.CornersMarker(scd, Color.Black);/ apply the filterfilter.ApplyInPlace(bt);运行结果:Crop :对原始图像确定矩形边界点并生成新图。Difference :原始
19、图像与叠置图像的差分运算。DifferenceEdgeDetector:在四方向上计算像素的差分最大值,因此获得边缘线(原始图像为灰度图),示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);pictureBox2.Image = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);/ create filterAForge.Imaging.Filters.DifferenceEdgeDetector filter = new AForge.Imaging.Filters.DifferenceEdgeDe
20、tector();/ apply the filterfilter.ApplyInPlace(bt);运行结果:Dilatation:膨胀算法,原理十分简单,去一定的临近像素,并将;临近像素最大值赋给当前像素。Edges:简单的边缘探测。Erosion :图像侵蚀,与膨胀算法完全相反,将临近像素最小值赋给当前点。EuclideanColorFiltering:欧几里德色彩过滤,使用RGB球体对色彩进行过滤。ExtractBiggestBlob:从图像中裁剪出最大的对象。ExtractChannel:获得彩色图像中的一个通道,并返回灰度图像。FillHoles:用于填补空洞。FilterIter
21、ator:用于过滤迭代操作,该类本身并未实现过滤功能,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);FiltersSequence filterSequence = new FiltersSequence();filterSequence.Add(new HitAndMiss( new short, 0, 0, 0 , -1, 1, -1 , 1, 1, 1 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new short, -1, 0, 0 ,
22、 1, 1, 0 , -1, 1, -1 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new short, 1, -1, 0 , 1, 1, 0 , 1, -1, 0 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new short, -1, 1, -1 , 1, 1, 0 , -1, 0, 0 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new
23、short, 1, 1, 1 , -1, 1, -1 , 0, 0, 0 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new short, -1, 1, -1 , 0, 1, 1 , 0, 0, -1 , HitAndMiss.Modes.Thinning);filterSequence.Add(new HitAndMiss( new short, 0, -1, 1 , 0, 1, 1 , 0, -1, 1 , HitAndMiss.Modes.Thinning);filterSequence.Add(new
24、HitAndMiss( new short, 0, 0, -1 , 0, 1, 1 , -1, 1, -1 , HitAndMiss.Modes.Thinning);/ 进行十次迭代AForge.Imaging.Filters.FilterIterator filter = new AForge.Imaging.Filters.FilterIterator(filterSequence, 10);Bitmap newImage = filter.Apply(bt);运行结果:GammaCorrection:基于公式:V(output)=V(input)g,g为改正系数。GaussianBlur
25、,GaussianSharpen:高斯模糊,高思锐化。Grayscale :图像的灰度变换,RGB三通道以一定的比值求和获得像素灰度值。GrayscaleToRGB:将灰度图转换为彩色图。HistogramEqualization:直方图均衡化,示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);/ 创建过滤器AForge.Imaging.Filters.HistogramEqualization filter = new AForge.Imaging.Filters.HistogramEqualization();filter.A
26、pplyInPlace(bt);运行结果:HomogenityEdgeDetector :边缘探测。IterativeThreshold:迭代阈值法,最后生成非黑即白的图像,具体算法过程为:1)设定初始阈值,小于阈值取背景色,大于阈值取对象色 2)阈值的一半继续迭代运算 3)当上一阈值与本阈值只差绝对值小于某值时停止运算。OilPainting:处理原理很简单:首先确定一定的搜索面积,在搜索区域内寻找出现频率最高的灰度值,找到后将其值赋值给当前搜索中心像素。示例如下:Bitmap bt = new Bitmap(C:UsersGAOXIANGDesktop1.jpg);/ 确定画笔为15Oil
27、Painting filter = new OilPainting(30);/ apply the filterfilter.ApplyInPlace(bt);运行结果:Opening:相当于对图像先进行侵蚀后进行膨胀。Pixellate:通过产生一定的矩形大小,使矩形中的像素具有相同的像素值,以此产生类似于马赛克的图像效果。QuadrilateralTransformation:提取原图像中的四边形区域的图像信息。StereoAnaglyph:用于产生立体视图,提供的初始影像应当具有不同的视角,示例如下:/ create filterStereoAnaglyph filter = new StereoAnaglyph( );/ set right image as overlayfilter.Overlay = rightImage/ apply the filter (providing left image)Bitmap resultImage = filter.Apply( leftImage );运行结果:TexturedFilter:为图片创建纹理。Threshold:基于特定阈值的图像二值化,当像素值大于阈值,为白色,小于阈值则取黑色。WaterWave:使图像具有水波纹效果。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1