原文:Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测



[函数名称]

图像Prewitt边缘检测函数PrewittEdgeProcess(WriteableBitmap src)

[函数代码]

///<summary>

/// Smooth edge detection.

///</summary>

///<param name="src">Source image.</param>

///<returns></returns>

publicstaticWriteableBitmap PrewittEdgeProcess(WriteableBitmap src)14 Prewitt边缘检测

{

if(src!=null )

{

int w = src.PixelWidth;

int h = src.PixelHeight;

WriteableBitmap smoothImage =newWriteableBitmap(w,h);

byte[] temp = src.PixelBuffer.ToArray();

byte[] tempMask = (byte[])temp.Clone();

int b = 0, g = 0, r = 0;

for (int j = 1; j < h - 1; j++)

{

for (int i = 4; i < w * 4 - 4; i += 4)

{

if (i == 0 || i == w - 4 || j == 0 || j == h - 1)

{

temp[i + j * w * 4] = (byte)0;

temp[i + 1 + j * w * 4] = (byte)0;

temp[i + 2 + j * w * 4] = (byte)0;

}

else

{

b =Math.Abs(tempMask[i - 4 + (j - 1) * w * 4] + tempMask[i + (j - 1) * w * 4] + tempMask[i + 4 + (j - 1) * w * 4]

- tempMask[i - 4 + (j + 1) * w * 4] - tempMask[i + (j + 1) * w * 4] - tempMask[i + 4 + (j + 1) * w * 4]) +

Math.Abs(tempMask[i + 4 + (j - 1) * w * 4] + tempMask[i + 4 + j * w * 4] + tempMask[i + 4 + (j + 1) * w * 4]

- tempMask[i - 4 + (j - 1) * w * 4] - tempMask[i - 4 + j * w * 4] - tempMask[i - 4 + (j + 1) * w * 4]);

g =Math.Abs(tempMask[i - 4 + 1 + (j - 1) * w * 4] + tempMask[i + 1 + (j - 1) * w * 4] + tempMask[i + 1 + 4 + (j - 1) * w * 4]

- tempMask[i - 4 + 1 + (j + 1) * w * 4] - tempMask[i + 1 + (j + 1) * w * 4] - tempMask[i + 1 + 4 + (j + 1) * w * 4]) +

Math.Abs(tempMask[i + 1 + 4 + (j - 1) * w * 4] + tempMask[i + 1 + 4 + j * w * 4] + tempMask[i + 1 + 4 + (j + 1) * w * 4]

- tempMask[i - 4 + 1 + (j - 1) * w * 4] - tempMask[i - 4 + 1 + j * w * 4] - tempMask[i - 4 + 1 + (j + 1) * w * 4]);

r =Math.Abs(tempMask[i - 4 + 2 + (j - 1) * w * 4] + tempMask[i + 2 + (j - 1) * w * 4] + tempMask[i + 4 + 2 + (j - 1) * w * 4]

- tempMask[i - 4 + 2 + (j + 1) * w * 4] - tempMask[i + 2 + (j + 1) * w * 4] - tempMask[i + 4 + 2 + (j + 1) * w * 4]) +

Math.Abs(tempMask[i + 4 + 2 + (j - 1) * w * 4] + tempMask[i + 4 + 2 + j * w * 4] + tempMask[i + 4 + 2 + (j + 1) * w * 4]

- tempMask[i - 4 + 2 + (j - 1) * w * 4] - tempMask[i - 4 + 2 + j * w * 4] - tempMask[i - 4 + 2 + (j + 1) * w * 4]);

temp[i + j * w * 4] = (byte)(b > 0 ? (b < 255 ? b : 255) : 0);

temp[i + 1 + j * w * 4] = (byte)(g > 0 ? (g < 255 ? g : 255) : 0);

temp[i + 2 + j * w * 4] = (byte)(r > 0 ? (r < 255 ? r : 255) : 0);

}

b = 0; g = 0; r = 0;

}

}

Stream sTemp = smoothImage.PixelBuffer.AsStream();

sTemp.Seek(0,SeekOrigin.Begin);

sTemp.Write(temp, 0, w * 4 * h);

return smoothImage;

}

else

{

returnnull;

}

}

Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测相关推荐

  1. Win8Metro(C#)数字图像处理--2.12Sobel边缘检测

    原文:Win8Metro(C#)数字图像处理--2.12Sobel边缘检测  [函数名称] 图像Sobel边缘检测函数SobelEdgeProcess(WriteableBitmap src) [ ...

  2. Win8Metro(C#)数字图像处理--2.3图像反色

    原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下:     ...

  3. Win8Metro(C#)数字图像处理--2.24二值图像闭运算

    原文:Win8Metro(C#)数字图像处理--2.24二值图像闭运算  [函数名称] 二值图像闭运算函数CloseOperateProcess(WriteableBitmap src) [算法说 ...

  4. Win8Metro(C#)数字图像处理--2.33图像非线性变换

    原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换  [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...

  5. Win8Metro(C#)数字图像处理--2.31灰度拉伸算法

    Win8Metro(C#)数字图像处理--2.31灰度拉伸算法 原文:Win8Metro(C#)数字图像处理--2.31灰度拉伸算法  [函数名称] 灰度拉伸函数GrayStretchProces ...

  6. Win8Metro(C#)数字图像处理--2.18图像平移变换

    原文:Win8Metro(C#)数字图像处理--2.18图像平移变换  [函数名称] 图像平移变换函数TranslationProcess(WriteableBitmap src,int x,in ...

  7. Win8Metro(C#)数字图像处理--2.7图像伪彩色

    Win8Metro(C#)数字图像处理--2.7图像伪彩色 原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色  2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoCol ...

  8. 【数字图像处理】Canny边缘检测详解及编程实现

    Canny边缘检测算法一直是边缘检测的经典算法.下面详细介绍Canny边缘检测算法的原理以及编程实现. Canny边缘检测基本原理: (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声:二必须尽量 ...

  9. 数字图像处理课程实习——边缘检测与图像分割

    本次实验的目标主要是为了掌握图像边缘检测和分割的意义和手段,掌握图像边缘检测和分割的方法及应用并通过实验讨论不同算子对边缘检测效果的影响. 本次实验主要完成了对图像进行Sobel算子边缘检测,对图像进 ...

最新文章

  1. #串口通信超时处理_【学院推荐】划重点!LabVIEW中串口参数需注意的几点
  2. boost::hana::tuple_c用法的测试程序
  3. adb linux 权限更改,使用命令chmod修改android文件权限
  4. Nginx的启动、停止和重启
  5. 牛客 - 云(扫描线)
  6. uva 1394poj 3517
  7. 计蒜客NOIP2017提高组模拟赛(四)day1
  8. sklearn 线性回归
  9. Exchange 2013 MAPI over HTTP
  10. String类两种实例化方式的区别
  11. ArcGIS教程 - 9 矢量数据空间分析
  12. 果木浪子吉他入门零基础教学(70课时)
  13. Xcode 8.0 Beta发布,详解Swift语言的重大变化
  14. Julia学习笔记:使用GLM包进行一元回归分析及模型拟合度检验
  15. physx: pid balance controll
  16. buuctf_[ACTF新生赛2020]swp
  17. 明光桥南 || 明光桥北
  18. css如何将彩色图片变为黑白图片
  19. 大长今人物系列:长今的心理课——医女张德(转载)
  20. 《Adobe Illustrator CS5中文版经典教程》—第0课0.15节创建和编辑渐变

热门文章

  1. 中国AI又夺一冠!依图刷榜全球声纹识别挑战赛,刷新纪录,大比分夺魁
  2. Objective-C语言中对象相等性与指针相等分析。
  3. class function,delphi静态函数的对象基址分析static
  4. 第 4 章 Hypertable
  5. C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
  6. GCC中的内嵌汇编语言
  7. 上周新闻回顾:微软补了又漏 思科自找对手
  8. 5G/4G: 3GPP组织及协议版本的发展
  9. Linux 的 60s USE 性能诊断方法论
  10. 互联网协议 — MQTT 消息队列遥测传输协议