博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro(C#)数字图像处理--2.43图像马赛克效果算法
阅读量:5815 次
发布时间:2019-06-18

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

原文:



[函数名称]

  图像马赛克效果        MosaicProcess(WriteableBitmap src, int v)

[算法说明]

  图像马赛克效果其实就是将图像分成大小一致的图像块,每一个图像块都是一个正方形,并且在这个正方形中所有像素值都相等。我们可以将这个正方形看作是一个模板窗口,模板中对应的所有图像像素值都等于该模板的左上角第一个像素的像素值,这样的效果就是马赛克效果,而正方形模板的大小则决定了马赛克块的大小,即图像马赛克化的程度。

[函数代码]

       ///         /// Mosaic process.        ///         /// The source image.        /// The threshould to control the result of mosaic process.        /// 
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; } }

[图像效果]

你可能感兴趣的文章
程序员面试如何与HR谈薪
查看>>
Flask之请求钩子
查看>>
程序员练级攻略(2018):Java底层知识
查看>>
postcss-bem插件在webpack4以上版本报错处理 .moveTo is not a function
查看>>
CSS
查看>>
基于OpenSSL的HTTPS通信C++实现
查看>>
登录有关的session和cookie(后台)
查看>>
Java多线程进阶(三三)—— J.U.C之collections框架:LinkedBlockingQueue
查看>>
构建静态页面 之 [ 表单 ]
查看>>
PHP下的异步尝试一:初识生成器
查看>>
Java 设计模式之装饰者模式
查看>>
JS 时间字符串和时间戳的相互转换
查看>>
NLP的ImageNet时代已经到来
查看>>
C++下的OpenCV中Mat类型存储的图像格式
查看>>
小程序开发
查看>>
本地IDC机房数据库容灾解决方案
查看>>
SpringBoot2系列教程(三)DI依赖注入
查看>>
十分钟搞定 Gradle
查看>>
MacOS下安装MongoDB数据库
查看>>
用户注册验证
查看>>