Win8Metro(C#)数字图像处理--2.13Roberts边缘检测
来源:互联网 发布:niji日本网络电视直播 编辑:程序博客网 时间:2024/06/06 00:53
[函数名称]
图像Roberts边缘检测函数RobertEdgeProcess(WriteableBitmap src)
[函数代码]
///<summary>
/// Roberts edge detection.
///</summary>
///<param name="src">Source image.</param>
///<returns></returns>
publicstaticWriteableBitmap RobertEdgeProcess(WriteableBitmap src)////13 Robert边缘检测
{
if(src!=null )
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap robertImage =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 + j * w * 4] - tempMask[i - 4 + (j+1) * w * 4]) + Math.Abs(tempMask[i - 4 + j * w * 4] - tempMask[i + (j + 1) * w * 4]);
g =Math.Abs(tempMask[i + 1 + j * w * 4] - tempMask[i - 4 + 1 + (j + 1) * w * 4]) + Math.Abs(tempMask[i - 4 + 1 + j * w * 4] - tempMask[i + 1 + (j + 1) * w * 4]);
r =Math.Abs(tempMask[i + 2 + j * w * 4] - tempMask[i - 4 + 2 + (j + 1) * w * 4]) + Math.Abs(tempMask[i - 4 + 2 + j * w * 4] - tempMask[i + 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 = robertImage.PixelBuffer.AsStream();
sTemp.Seek(0,SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return robertImage;
}
else
{
returnnull;
}
}
[图像效果]
- Win8Metro(C#)数字图像处理--2.13Roberts边缘检测
- Win8Metro(C#)数字图像处理--2.12Sobel边缘检测
- Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测
- 数字图像处理 边缘检测
- Win8Metro(C#)数字图像处理--2.8图像线性变换
- Win8Metro(C#)数字图像处理--2.11图像锐化
- Win8Metro(C#)数字图像处理--2.26图像减法
- 边缘检测Roberts算子
- Roberts边缘检测
- Roberts边缘检测算子
- Roberts 边缘检测
- 数字图像处理:8.边缘检测
- 数字图像处理之边缘检测
- Win8 Metro(C#)数字图像处理--2.48Canny边缘检测算法
- Win8Metro(C#)数字图像处理--2.3图像反色
- Win8Metro(C#)数字图像处理--2.4图像颜色聚类
- Win8Metro(C#)数字图像处理--2.5图像亮度调整
- Win8Metro(C#)数字图像处理--2.6图像对比度调整
- Linux top命令的用法详细详解
- SQLSERVER排查CPU占用高的情况
- 通过C++/CLI使用FFMPEG库进行视频解码[初步]
- 1、设计模式之策略模式
- Linux makefile 教程 非常详细,且易懂
- Win8Metro(C#)数字图像处理--2.13Roberts边缘检测
- Topic 1: hello world for react-native
- NOTIFY消息
- 配置spring.xml文件时tx标签报错
- swing【最后一弹】JTable仿写简单Excel!
- 安卓消息处理机制
- 日经社説 20150407 電源構成は将来を見据えて議論せよ
- Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测
- 数据库调优教程(二)慢查询数据准备