Win8 Metro(C#)数字图像处理--2.43图像马赛克效果算法
来源:互联网 发布:闪电侠第三季人工智能 编辑:程序博客网 时间:2024/05/02 04:28
[函数名称]
图像马赛克效果 MosaicProcess(WriteableBitmap src, int v)
[算法说明]
图像马赛克效果其实就是将图像分成大小一致的图像块,每一个图像块都是一个正方形,并且在这个正方形中所有像素值都相等。我们可以将这个正方形看作是一个模板窗口,模板中对应的所有图像像素值都等于该模板的左上角第一个像素的像素值,这样的效果就是马赛克效果,而正方形模板的大小则决定了马赛克块的大小,即图像马赛克化的程度。
[函数代码]
<strong> /// <summary> /// Mosaic process. /// </summary> /// <param name="src">The source image.</param> /// <param name="v">The threshould to control the result of mosaic process.</param> /// <returns></returns> public static WriteableBitmap MosaicProcess(WriteableBitmap src, int v)////图像马赛克效果 { if (src != null) { int w = src.PixelWidth; int h = src.PixelHeight; WriteableBitmap srcImage = new WriteableBitmap(w, h); byte[] temp = src.PixelBuffer.ToArray(); byte[] tempMask = (byte[])temp.Clone(); int dR = 0; int dG = 0; int dB = 0; int dstX = 0; int dstY=0; dR = tempMask[2]; dG = tempMask[1]; dB = tempMask[0]; for (int j = 0; j < h; j++) { for (int i = 0; i < w; i++) { dstX = i; dstY = j; if (j % v == 0) { if (i % v == 0) { dB = tempMask[dstX * 4 + dstY * w * 4]; dG = tempMask[dstX * 4 + 1 + dstY * w * 4]; dR = tempMask[dstX * 4 + 2 + dstY * w * 4]; } else { temp[dstX * 4 + dstY * w * 4] = (byte)dB; temp[dstX * 4 + 1 + dstY * w * 4] = (byte)dG; temp[dstX * 4 + 2 + dstY * w * 4] = (byte)dR; } } else { temp[dstX * 4 + dstY * w * 4] = temp[dstX * 4 + (dstY - 1) * w * 4]; temp[dstX * 4 + 1 + dstY * w * 4] = temp[dstX * 4 + 1 + (dstY - 1) * w * 4]; temp[dstX * 4 + 2 + dstY * w * 4] = temp[dstX * 4 + 2 + (dstY - 1) * w * 4]; } } } Stream sTemp = srcImage.PixelBuffer.AsStream(); sTemp.Seek(0, SeekOrigin.Begin); sTemp.Write(temp, 0, w * 4 * h); return srcImage; } else { return null; } }</strong>
[图像效果]
0 0
- Win8 Metro(C#)数字图像处理--2.43图像马赛克效果算法
- Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
- Win8 Metro(C#)数字图像处理--2.44图像油画效果算法
- Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
- Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法
- Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法
- Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果
- Win8 Metro(C#) 数字图像处理--1 图像打开,保存
- Win8 Metro(C#)数字图像处理--2.39二值图像投影
- Win8 Metro(C#)数字图像处理--2.50图像运动模糊
- Win8 Metro(C#)数字图像处理--2.53图像傅立叶变换
- Win8 Metro(C#)数字图像处理--2.54迭代法图像二值化
- Win8 Metro(C#)数字图像处理--2.55OSTU法图像二值化
- Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化
- Win8 Metro(C#)数字图像处理--2.58双峰法图像二值化
- Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化
- Win8 Metro(C#)数字图像处理--2.62图像对数增强
- Win8 Metro(C#)数字图像处理--2.63图像指数增强
- 如何把一个数组循环右移k位
- 面向基于英特尔® 架构的平台的实时端到端 H.265/HEVC 解决方案
- 关于GetSystemTimeAdjustment中提到的time of day
- 关于数组
- excel多次替换
- Win8 Metro(C#)数字图像处理--2.43图像马赛克效果算法
- Web端编写(四)——查看会议议程
- 解决 Git For Windows 无法提交
- static 代码块
- Antiscroll 滚动条插件
- directshow 获取本地音频
- 【GPS】d文件转换为o文件
- 函数指针用法
- Fresco(各种特效)——播放gif