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

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

原文:



[函数名称]

  Ostu法图像二值化      WriteableBitmap OstuThSegment(WriteableBitmap src)

[函数代码]

///         /// Ostu method of image segmention.        ///         /// The source image.        /// 
public static WriteableBitmap OstuThSegment(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 Th = 0; ; //定义背景和目标像素数目变量N1,N2,灰度变量U1,U2,灰度和变量Sum1,Sum2,临时缓存变量Temp int N1 = 0, N2 = 0, Sum1 = 0, Sum2 = 0; //定义背景和目标像素比例变量W1,W2,图像整体平均灰度变量U,方差变量g,对比阈值变量TT double W1 = 0, W2 = 0, U1 = 0, U2 = 0, g = 0, TT = 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 T = 0; T <= 255; T++) { for (int i = 0; i < srcData.Length; i++) { if (srcData[i] > T) { N2++; Sum2 += srcData[i]; } else { N1++; Sum1 += srcData[i]; } } W1 = (double)(N1 / (N1 + N2)); W2 = (double)(1.0 - W1); U1 = (N1 == 0 ? 0.0 : (Sum1 / N1)); U2 = (N2 == 0 ? 0.0 : (Sum2 / N2)); g = N1 * N2 * (U1 - U2) * (U1 - U2); if (g > TT) { TT = g; Th = T; } N1 = 0; N2 = 0; Sum1 = 0; Sum2 = 0; W1 = 0.0; W2 = 0.0; U1 = 0.0; U2 = 0.0; g = 0.0; } 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; } }
你可能感兴趣的文章
Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))...
查看>>
【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
查看>>
玩转spring boot——ajax跨域
查看>>
使用Python做科学计算初探(转)
查看>>
线程状态及属性
查看>>
[20171124]手工使用种子库建库.txt
查看>>
4.2、Android Studio压缩你的代码和资源
查看>>
Knockout应用开发指南 第十章:更多信息(完结篇)
查看>>
apache禁止执行php文件
查看>>
模块打包工具 webpack
查看>>
C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)
查看>>
现代IM系统中消息推送和存储架构的实现
查看>>
Linux下时间范围判断的程序流程及其C代码实现
查看>>
关闭mongodb
查看>>
Onvif开发之客户端鉴权获取参数篇
查看>>
高性能后台服务器架构设计
查看>>
mysql通信协议
查看>>
一碗拉面,两多温情
查看>>
英伟达研发全球首款AI自动驾驶平台 无需方向盘和油门!
查看>>
MSSQL - 架构分析 - 从SQL Server 2017发布看SQL Server架构的演变
查看>>