基本信息
源码名称:基于插件机制的图像处理程序C#源码(ImageProcessing)
源码大小:1.97M
文件格式:.rar
开发语言:C#
更新时间:2018-03-10
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元×
微信扫码支付:3 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
针对大学图像处理课程里的算法,结合插件机制写的例子;比如使用robert算子进行边缘检测 。目前支持bmp格式的图片
针对大学图像处理课程里的算法,结合插件机制写的例子;比如使用robert算子进行边缘检测 。目前支持bmp格式的图片
using System;
using System.Drawing;
using System.Drawing.Imaging;
namespace ImageProcessing.PlugIns
{
class Robert
{
public unsafe static Bitmap Detect(Bitmap srcBmp)
{
int width;
int height;
int row;
int column;
int stride;
int space;
Bitmap dstBmp;
BitmapData srcBmpDat;
BitmapData dstBmpDat;
//模板所包括的四个像素颜色分量和对应的坐标
byte leftTop; //leftTop(x-1,y-1) rightTop(x,y-1)
byte leftBtm; //leftBtm(x-1,y) rightBtm(x,y)
byte rightTop;
byte rightBtm;
byte* srcPtr;
byte* dstPtr;
int templateIdx;//2 x 2模板索引
if (srcBmp.PixelFormat != PixelFormat.Format24bppRgb)
return null;
dstBmp = (Bitmap)srcBmp.Clone();
width = dstBmp.Width;
height = dstBmp.Height;
srcBmpDat = srcBmp.LockBits(new Rectangle(0, 0, width, height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb);
dstBmpDat = dstBmp.LockBits(new Rectangle(0, 0, width, height),
ImageLockMode.WriteOnly,
PixelFormat.Format24bppRgb);
stride =srcBmpDat.Stride ;
space = stride - 3 * width;
srcPtr = (byte*)srcBmpDat.Scan0;
srcPtr =stride;//直接绕过第0行而跳到第1行
dstPtr = (byte*)dstBmpDat.Scan0;
dstPtr =stride;
//不处理最上边和最左边,索引从1开始跳过0
for (row = 1; row < height; row )
{
srcPtr =3;
dstPtr =3;
for (column = 1; column < width; column )
{
for (templateIdx = 0; templateIdx < 3; templateIdx )
{
rightBtm = srcPtr[templateIdx];
rightTop = srcPtr[templateIdx - stride];
leftBtm = srcPtr[templateIdx - 3];
leftTop = srcPtr[templateIdx - stride - 3];
dstPtr[templateIdx] =
(byte)(((int)Math.Sqrt((leftTop - rightBtm) *
(leftTop - rightBtm)
(leftBtm - rightTop) *
(leftBtm - rightTop)
)) & 0x000000ff);
}
srcPtr = 3;
dstPtr = 3;
}
srcPtr = space;
dstPtr = space;
}
srcBmp.UnlockBits(srcBmpDat);
dstBmp.UnlockBits(dstBmpDat);
//srcBmp.Dispose();
return dstBmp;
}
}
}