博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro(C#)数字图像处理--2.70修正后的阿尔法滤波器
阅读量:6161 次
发布时间:2019-06-21

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

原文:

///         /// Alpha filter.        ///         /// The source image.        /// One parameter set from 0 to 9.        /// 
public static WriteableBitmap AlphaFilterProcess(WriteableBitmap src, int tNumber)修正的阿尔法滤波器 { if (src != null) { int w = src.PixelWidth; int h = src.PixelHeight; WriteableBitmap filterImage = new WriteableBitmap(w, h); byte[] temp = src.PixelBuffer.ToArray(); byte[] tempMask = (byte[])temp.Clone(); double[] Gray = new double[9]; double gray = 255; int tempr = 0, tempb = 0, tempg = 0; for (int j = 1; j < h - 1; j++) { for (int i = 1; i < w - 1; i++) { tempb = 0; tempg = 0; tempr = 0; int[] B = new int[9] { tempMask[i * 4 + j * w * 4], tempMask[(i - 1) * 4 + (j - 1) * w * 4], tempMask[i * 4 + (j - 1) * w * 4], tempMask[(i + 1) * 4 + (j - 1) * w * 4], tempMask[(i - 1) * 4 + j * w * 4], tempMask[(i + 1) * 4 + j * w * 4], tempMask[(i - 1) * 4 + (j + 1) * w * 4], tempMask[i * 4 + (j + 1) * w * 4], tempMask[(i + 1) * 4 + (j + 1) * w * 4] }; int[] G = new int[9] { tempMask[i * 4 + 1 + j * w * 4], tempMask[(i - 1) * 4 + 1 + (j - 1) * w * 4], tempMask[i * 4 + 1 + (j - 1) * w * 4], tempMask[(i + 1) * 4 + 1 + (j - 1) * w * 4], tempMask[(i - 1) * 4 + 1 + j * w * 4], tempMask[(i + 1) * 4 + 1 + j * w * 4], tempMask[(i - 1) * 4 + 1 + (j + 1) * w * 4], tempMask[i * 4 + 1 + (j + 1) * w * 4], tempMask[(i + 1) * 4 + 1 + (j + 1) * w * 4] }; int[] R = new int[9] { tempMask[i * 4 + 2 + j * w * 4], tempMask[(i - 1) * 4 + 2 + (j - 1) * w * 4], tempMask[i * 4 + 2 + (j - 1) * w * 4], tempMask[(i + 1) * 4 + 2 + (j - 1) * w * 4], tempMask[(i - 1) * 4 + 2 + j * w * 4], tempMask[(i + 1) * 4 + 2 + j * w * 4], tempMask[(i - 1) * 4 + 2 + (j + 1) * w * 4], tempMask[i * 4 + 2 + (j + 1) * w * 4], tempMask[(i + 1) * 4 + 2 + (j + 1) * w * 4] }; for (int n = 0; n < 9; n++) { Gray[n] = (double)B[n] * 0.114 + (double)G[n] * 0.587 + (double)R[n] * 0.299; } for (int x = 0; x < 9; x++) { for (int y = x + 1; y < 9; y++) { gray = Gray[x]; tempb = B[x]; tempg = G[x]; tempr = R[x]; if (Gray[x] > Gray[y]) { Gray[x] = Gray[y]; Gray[y] = gray; B[x] = B[y]; G[x] = G[y]; R[x] = R[y]; B[y] = tempb; G[y] = tempg; R[y] = tempr; } } } if (tNumber < 0 || tNumber > 8) return null; tNumber = (tNumber % 2 == 0 ? tNumber : tNumber - 1); for (int m = 0; m < (int)(tNumber / 2); m++) { R[m] = 0; G[m] = 0; B[m] = 0; R[8 - m] = 0; G[8 - m] = 0; B[8 - m] = 0; } temp[i * 4 + j * w * 4] = (byte)(B.Sum() / (9 - tNumber)); temp[i * 4 + 1 + j * w * 4] = (byte)(G.Sum() / (9 - tNumber)); temp[i * 4 + 2 + j * w * 4] = (byte)(R.Sum() / (9 - tNumber)); } } Stream sTemp = filterImage.PixelBuffer.AsStream(); sTemp.Seek(0, SeekOrigin.Begin); sTemp.Write(temp, 0, w * 4 * h); return filterImage; } else { return null; } }
你可能感兴趣的文章
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
深入python的set和dict
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>