AForge学习笔记.docx

上传人:b****7 文档编号:9894423 上传时间:2023-02-07 格式:DOCX 页数:16 大小:2.23MB
下载 相关 举报
AForge学习笔记.docx_第1页
第1页 / 共16页
AForge学习笔记.docx_第2页
第2页 / 共16页
AForge学习笔记.docx_第3页
第3页 / 共16页
AForge学习笔记.docx_第4页
第4页 / 共16页
AForge学习笔记.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

AForge学习笔记.docx

《AForge学习笔记.docx》由会员分享,可在线阅读,更多相关《AForge学习笔记.docx(16页珍藏版)》请在冰豆网上搜索。

AForge学习笔记.docx

AForge学习笔记

AForge学习笔记:

[1]AForge.Imaging.Filters

∙|

AdaptiveSmoothing:

图像平滑处理,用于对图像进行适度的平滑,再平滑噪声的条件下保留边缘效应,实现如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\0.jpg");

Bitmapbt1=bt.Clone(newRectangle(newPoint(0,0),bt.Size),bt.PixelFormat);

pictureBox1.Image=bt;

//createfilter

AForge.Imaging.Filters.AdaptiveSmoothingfilter=newAForge.Imaging.Filters.AdaptiveSmoothing();

//applythefilter

filter.ApplyInPlace(bt1);

结果如下图所示。

Add:

将原始图像和叠置图像像素相加得到新图像,我们通过红色+黄色=橙色来展示运行结果:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

Bitmapbt1=newBitmap(@"C:

\Users\GAOXIANG\Desktop\2.jpg");

//创建过滤器

AForge.Imaging.Filters.Addfilter=newAForge.Imaging.Filters.Add(bt);

//图像相加

BitmapresultImage=filter.Apply(bt1);

运行结果如下图。

AdditiveNoise:

通俗的翻译,我们可以理解为添加剂噪声滤波器,在原始图像的像素中添加一个随机值,随机值由IRandomNumberGenerator生成,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

pictureBox1.Image=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

//创建随机数组

IRandomNumberGeneratorgenerator=newUniformGenerator(newRange(-50,50));

//创建过滤器

AForge.Imaging.Filters.AdditiveNoisefilter=newAForge.Imaging.Filters.AdditiveNoise(generator);

//图像处理

filter.ApplyInPlace(bt);

运行结果如下。

BackwardQuadrilateralTransformation:

后向四边形转换,可以实现将原始图像转换到目标图像的四边形区域当中,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

Bitmapbt1=newBitmap(@"C:

\Users\GAOXIANG\Desktop\2.jpg");

//定义四边形角点

Listcorners=newList();

corners.Add(newIntPoint(99,99));

corners.Add(newIntPoint(156,79));

corners.Add(newIntPoint(184,126));

corners.Add(newIntPoint(122,150));

//createfilter

AForge.Imaging.Filters.BackwardQuadrilateralTransformationfilter=newAForge.Imaging.Filters.BackwardQuadrilateralTransformation(bt,corners);

//applythefilter

BitmapnewImage=filter.Apply(bt1);

运行结果:

BayerDithering:

基于Bayer矩阵的图像有序抖动,实现如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

Bitmapbt1=bt.Clone(newRectangle(newPoint(0,0),bt.Size),PixelFormat.Format8bppIndexed);

//创建过滤器

AForge.Imaging.Filters.BayerDitheringfilter=newAForge.Imaging.Filters.BayerDithering();

//图像过滤

filter.ApplyInPlace(bt1);

运行结果:

BayerFilter:

通过色彩传感器建立色彩矩阵将灰度图转为彩色图。

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\3.jpg");

//Bitmapbt1=bt.Clone(newRectangle(newPoint(0,0),bt.Size),PixelFormat.Format8bppIndexed);

//生成过滤器

BayerFilterfilter=newBayerFilter();

//applythefilter

BitmaprgbImage=filter.Apply(bt);

运行结果:

BilateralSmoothing:

使用色彩和空间因子进行保存边缘效应,消除噪声的双向平滑。

示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\2.jpg");

//createfilter

AForge.Imaging.Filters.BilateralSmoothingfilter=newAForge.Imaging.Filters.BilateralSmoothing();

filter.KernelSize=7;

//空间因子

filter.SpatialFactor=10;

//色彩因子

filter.ColorFactor=60;

filter.ColorPower=0.5;

//applythefilter

filter.ApplyInPlace(bt);

运行结果:

BlobsFiltering:

将一定大小的对象剔除,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.bmp");

//创建过滤器

AForge.Imaging.Filters.BlobsFilteringfilter=newAForge.Imaging.Filters.BlobsFiltering();

//设置过滤条件(对象长、宽至少为70)

filter.CoupledSizeFiltering=true;

filter.MinWidth=100;

filter.MinHeight=80;

filter.ApplyInPlace(bt);

运行结果:

Blur:

对图像实施模糊变换。

BradleyLocalThresholding:

局部阈值处理,当像素值比邻近窗体所有像素的均值低百分之t时将该点取为黑,否者均为白。

示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\2.jpg");

AForge.Imaging.Filters.BradleyLocalThresholdingfilter=newAForge.Imaging.Filters.BradleyLocalThresholding();

filter.ApplyInPlace(bt);

运行结果:

BrightnessCorrection:

灰度矫正,若输入的矫正数p为正,则将输入图像灰度值范围变换为【0,255-p】,输出范围为【p,255】,当为负时输入范围【-p,255】,输出范围【0,255-p】。

CannyEdgeDetector:

使用Canny边缘检测算子检测边缘,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

Bitmapbt1=bt.Clone(newRectangle(newPoint(0,0),bt.Size),System.Drawing.Imaging.PixelFormat.Format8bppIndexed);

AForge.Imaging.Filters.CannyEdgeDetectorfilter=newAForge.Imaging.Filters.CannyEdgeDetector();

filter.ApplyInPlace(bt1);

运行结果:

CanvasCrop,CanvasFill,CanvasMove:

对特定区域进行色彩填充,或对图像进行整体移动。

ChannelFiltering:

对彩色图像RGB通道进行灰度过滤,在某以特定范围的至将被保留或去除,使用如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

AForge.Imaging.Filters.ChannelFilteringfilter=newAForge.Imaging.Filters.ChannelFiltering();

//确定通道过滤范围

filter.Red=newIntRange(0,255);

filter.Green=newIntRange(100,255);

filter.Blue=newIntRange(100,255);

filter.ApplyInPlace(bt);

运行结果:

Closing:

方法:

对图像中的单个对象进行膨胀,在进行侵蚀,由于膨胀会使本来不相连的独立对象相互连接,使得即是侵蚀也依旧能保持对象的相连状态。

ColorRemapping:

与LevelsLinear不同,ColorRemapping可以对图像进行非线性变换,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

byte[]map=newbyte[256];

for(inti=0;i<256;i++)

{

 map[i]=(byte)Math.Min(255,Math.Pow(2,(double)i/32));

}

//createfilter

AForge.Imaging.Filters.ColorRemappingfilter=newAForge.Imaging.Filters.ColorRemapping(map,map,map);

//applythefilter

filter.ApplyInPlace(bt);

运行结果:

Connectedcomponentslabeling:

通过为不同对象去不同颜色来区别图像中的不同部分。

ConservativeSmoothing:

使用矩阵窗口在图像中搜索,将窗口中最小或最大值用平均值来代替以此消除噪声。

Convolution:

卷积操作,通过设置不同的卷积矩阵获得不同的图像处理效果,如下面示例:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

pictureBox1.Image=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg"); 

//定义卷积核

int[,]kernel={

{-2,-1, 0},

{-1, 1, 1},

{ 0, 1, 2}};

//创建过滤器

AForge.Imaging.Filters.Convolutionfilter=newAForge.Imaging.Filters.Convolution(kernel);

filter.ApplyInPlace(bt);

运行结果:

CornersMarker:

通过角点算法探测并高亮显示角点,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.bmp");

//createcornerdetector'sinstance

SusanCornersDetectorscd=newSusanCornersDetector();

//createcornermakerfilter

AForge.Imaging.Filters.CornersMarkerfilter=newAForge.Imaging.Filters.CornersMarker(scd,Color.Black);

//applythefilter

filter.ApplyInPlace(bt);

运行结果:

Crop:

对原始图像确定矩形边界点并生成新图。

Difference:

原始图像与叠置图像的差分运算。

DifferenceEdgeDetector:

在四方向上计算像素的差分最大值,因此获得边缘线(原始图像为灰度图),示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

pictureBox2.Image=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg"); 

//createfilter

AForge.Imaging.Filters.DifferenceEdgeDetectorfilter=newAForge.Imaging.Filters.DifferenceEdgeDetector();

//applythefilter

filter.ApplyInPlace(bt);

运行结果:

Dilatation:

膨胀算法,原理十分简单,去一定的临近像素,并将;临近像素最大值赋给当前像素。

Edges:

简单的边缘探测。

Erosion:

图像侵蚀,与膨胀算法完全相反,将临近像素最小值赋给当前点。

EuclideanColorFiltering:

欧几里德色彩过滤,使用RGB球体对色彩进行过滤。

ExtractBiggestBlob:

从图像中裁剪出最大的对象。

ExtractChannel:

获得彩色图像中的一个通道,并返回灰度图像。

FillHoles:

用于填补空洞。

FilterIterator:

用于过滤迭代操作,该类本身并未实现过滤功能,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

FiltersSequencefilterSequence=newFiltersSequence();

filterSequence.Add(newHitAndMiss(

        newshort[,]{{0,0,0},{-1,1,-1},{1,1,1}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{-1,0,0},{1,1,0},{-1,1,-1}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{1,-1,0},{1,1,0},{1,-1,0}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{-1,1,-1},{1,1,0},{-1,0,0}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{1,1,1},{-1,1,-1},{0,0,0}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{-1,1,-1},{0,1,1},{0,0,-1}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{0,-1,1},{0,1,1},{0,-1,1}},

        HitAndMiss.Modes.Thinning));

filterSequence.Add(newHitAndMiss(

        newshort[,]{{0,0,-1},{0,1,1},{-1,1,-1}},

        HitAndMiss.Modes.Thinning));

//进行十次迭代

AForge.Imaging.Filters.FilterIteratorfilter=newAForge.Imaging.Filters.FilterIterator(filterSequence,10);

BitmapnewImage=filter.Apply(bt);

运行结果:

GammaCorrection:

基于公式:

V(output)=V(input)^g,g为改正系数。

GaussianBlur,GaussianSharpen:

高斯模糊,高思锐化。

Grayscale:

图像的灰度变换,R\G\B三通道以一定的比值求和获得像素灰度值。

GrayscaleToRGB:

将灰度图转换为彩色图。

HistogramEqualization:

直方图均衡化,示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

//创建过滤器

AForge.Imaging.Filters.HistogramEqualizationfilter=newAForge.Imaging.Filters.HistogramEqualization();

filter.ApplyInPlace(bt);

运行结果:

HomogenityEdgeDetector:

边缘探测。

IterativeThreshold:

迭代阈值法,最后生成非黑即白的图像,具体算法过程为:

1)设定初始阈值,小于阈值取背景色,大于阈值取对象色2)阈值的一半继续迭代运算3)当上一阈值与本阈值只差绝对值小于某值时停止运算。

OilPainting:

处理原理很简单:

首先确定一定的搜索面积,在搜索区域内寻找出现频率最高的灰度值,找到后将其值赋值给当前搜索中心像素。

示例如下:

Bitmapbt=newBitmap(@"C:

\Users\GAOXIANG\Desktop\1.jpg");

//确定画笔为15

OilPaintingfilter=newOilPainting(30);

//applythefilter

filter.ApplyInPlace(bt);

运行结果:

Opening:

相当于对图像先进行侵蚀后进行膨胀。

Pixellate:

通过产生一定的矩形大小,使矩形中的像素具有相同的像素值,以此产生类似于马赛克的图像效果。

QuadrilateralTransformation:

提取原图像中的四边形区域的图像信息。

StereoAnaglyph:

用于产生立体视图,提供的初始影像应当具有不同的视角,示例如下:

//createfilter

StereoAnaglyphfilter=newStereoAnaglyph();

//setrightimageasoverlay

filter.Overlay=rightImage

//applythefilter(providingleftimage)

BitmapresultImage=filter.Apply(leftImage);

运行结果:

TexturedFilter:

为图片创建纹理。

Threshold:

基于特定阈值的图像二值化,当像素值大于阈值,为白色,小于阈值则取黑色。

WaterWave:

使图像具有水波纹效果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1