博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化
阅读量:5779 次
发布时间:2019-06-18

本文共 2344 字,大约阅读时间需要 7 分钟。

原文:



[函数名称]

  简单统计法图像二值化 WriteableBitmap StatisticalThSegment(WriteableBitmap src)

///         /// Statistical method of image segmention.        ///         /// The source image.        /// 
public static WriteableBitmap StatisticalThSegment(WriteableBitmap src) Ostu法阈值分割 { if (src != null) { int w = src.PixelWidth; int h = src.PixelHeight; WriteableBitmap dstImage = new WriteableBitmap(w, h); byte[] temp = src.PixelBuffer.ToArray(); byte[] tempMask = (byte[])temp.Clone(); //定义灰度图像信息存储变量 int[] srcData = new int[w * h]; int eX = 0; int eY = 0; int sumEF = 0; int sumE = 0; int eMax = 0; //定义阈值变量 int Th = 0; for (int j = 0; j < h; j++) { for (int i = 0; i < w; i++) { srcData[i + j * w] = (int)((double)tempMask[i * 4 + j * w * 4] * 0.114 + (double)tempMask[i * 4 + 1 + j * w * 4] * 0.587 + (double)tempMask[i * 4 + 2 + j * w * 4] * 0.299); } } for (int j = 1; j < h - 1; j++) { for (int i = 1; i < w - 1; i++) { eX = srcData[i - 1 + j * w] - srcData[i + 1 + j * w]; eY = srcData[i + (j - 1) * w] - srcData[i + (j + 1) * w]; eMax = Math.Max(eX, eY); sumE += eMax; sumEF += eMax * srcData[i + j * w]; } } Th = (int)(sumEF / sumE); for (int j = 0; j < h; j++) { for (int i = 0; i < w; i++) { temp[i * 4 + j * w * 4] = temp[i * 4 + 1 + j * w * 4] = temp[i * 4 + 2 + j * w * 4] = (byte)(srcData[i + j * w] < Th ? 0 : 255); } } Stream sTemp = dstImage.PixelBuffer.AsStream(); sTemp.Seek(0, SeekOrigin.Begin); sTemp.Write(temp, 0, w * 4 * h); return dstImage; } else { return null; } }
你可能感兴趣的文章
【设计模式】数据访问对象模式
查看>>
Tomcat8 配置Oracle11g数据源
查看>>
【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()
查看>>
阿里架构师:程序员必须掌握的几项核心技术能力
查看>>
程序员常用的六大技术博客类
查看>>
vue中动画的实现的几种方式
查看>>
Iceworks 2.8.0 发布,自定义你的 React 模板
查看>>
胖哥学SpringMVC:请求方式转换过滤器配置
查看>>
Kotlin 更加优雅的 Builder - 理解 with
查看>>
前端日拱一卒D6——字符编码与浏览器解析
查看>>
python学习笔记- 多线程
查看>>
换一种思维看待PHP VS Node.js
查看>>
举重若轻的人人车移动端数据平台
查看>>
Oracle回应用户锁定,自治数据库是更好选择
查看>>
深入理解浏览器的缓存机制
查看>>
使用 Swift 3.0 操控日期
查看>>
微软向Linux社区开放60000多项专利:对开源微软是认真的
查看>>
版本控制、Git及其在企业中的应用
查看>>
Ruby开发者已可通过Fog管理Microsoft Azure服务
查看>>
《Doing It - Management 3.0 Experiences》作者访谈
查看>>