图像滤镜艺术---Oilpaint油画滤镜

图像滤镜艺术---Oilpaint油画滤镜
原文:图像滤镜艺术---Oilpaint油画滤镜

 Oilpaint油画滤镜
图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间就像雾一样随机呈现。
算法过程如下:
假设当前像素为P(x,y),他的随机位置为Pd(dx,dy),那么算法公式如下:

 其中,K(v)为最大值不大于v的随机数正数,v为雾化阈值,v值越大,雾化程度越明显,反之,雾化程度越小,v=0时,图像无变化效果。

 核心代码如下:

        /// <summary>

        /// Mosaic filter.

        /// </summary>

        /// <param name="src">Source  image.</param>

        /// <param name="blockSize">The size of mosaic effect.</param>

        /// <returns>Resullt image.</returns>

        public Bitmap OilpaintFilter(Bitmap src, int intensity)

        {

            Bitmap srcBitmap = new Bitmap(src);

            int w = srcBitmap.Width;

            int h = srcBitmap.Height;

            System.Drawing.Imaging.BitmapData srcData = srcBitmap.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            IntPtr ptr = srcData.Scan0;

            int bytes = h * srcData.Stride;

            byte[] srcValues = new byte[bytes];

            System.Runtime.InteropServices.Marshal.Copy(ptr, srcValues, 0, bytes);

            byte[] tempValues = (byte[])srcValues.Clone();

            int stride = srcData.Stride;

            Random ran = new Random();

            int k = 0;

            int dx = 0;

            int dy = 0;

            for (int j = 0; j < h; j++)

            {

                for (int i = 0; i < w; i++)

                {

                    k = ran.Next(intensity);

                    dx = (i + k) >= w ? w - 1 : (i + k);

                    dy = (j + k) >= h ? h - 1 : (j + k);

                    tempValues[i * 4 + j * w * 4] = (byte)srcValues[dx * 4 + dy * w * 4];

                    tempValues[i * 4 + 1 + j * w * 4] = (byte)srcValues[dx * 4 + 1 + dy * w * 4];

                    tempValues[i * 4 + 2 + j * w * 4] = (byte)srcValues[dx * 4 + 2 + dy * w * 4];

                }

            }

            srcValues = (byte[])tempValues.Clone();

            System.Runtime.InteropServices.Marshal.Copy(srcValues, 0, ptr, bytes);

            srcBitmap.UnlockBits(srcData);

            return srcBitmap;

        }

 图像油画滤镜效果如下:

原图

Oilpaint滤镜效果

最后,放上一个完整的C#版程序Demo下载链接:http://www.zealpixel.com/forum.php?mod=viewthread&tid=52&extra=page%3D1

posted on 2018-03-14 08:56 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/8564738.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2019创建android,Visual Studio 2019编写的安卓程序,生成失败

下载实例不改动任何能够编译成功&#xff0c;稍加改动无法编译成功。布局代码&#xff1a;xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"fill_parent"android:layout_height&q…

android来电事件,android – 来电时没有响铃事件

我不知道问题出在哪里.监听器没有捕获到铃声事件(所以我可以决定接受还是拒绝来电).在清单中是这样的&#xff1a;在主要活动onCreate是这样的&#xff1a;IntentFilter filter new IntentFilter();filter.addAction("android.SipDemo.INCOMING_CALL");callReceiver…

转:数据库收缩

1. 数据库的相关属性 在MS中创建数据库时会为数据库分配初始的大小&#xff08;如下图&#xff1a;数据库和日志两个文件&#xff09;&#xff0c;随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式&#xff1a; 自动增长&#xff1a;在自动增长中可以设置每次的…

python操作excel常用的方法

读操作模块安装  pip install xlrd 写操作模块安装  pip install xlwt xlrd读操作 1、打开excel   xl xlrd.open_workbook(test.xls) 2、通过索引获取工作表   table xl.sheet()[0] #有多个sheet&#xff0c;获取第一个sheet 3、获取第一行的内容   row table.row…

懒加载与预加载

前端性能优化中图片资源的优化。 1.懒加载&#xff08;延迟加载&#xff09; 1.图片进入可视区域之后请求图片资源&#xff1b; 2.对于电商等图片较多&#xff0c;页面很长的业务场景很适用&#xff1b; 3.可以减少无效资源的加载&#xff1b; 4.并发加载的资源过多会阻塞js的加…

8.使用Exists监控ZNode的三大Change事件

一、 zookeeper是一个分布式的协调程序&#xff08;所有程序都是通过订阅它来相互感知&#xff09;1. tcp&#xff08;长链接&#xff09; watcherserver -》clientclient -》server2. Driver 中的方法 exists() 监控一个znode的 CURD 的操作。client1 client2 同时订阅 baidu…

广东 职称英语计算机,现在评职称英语和计算机都不用考了

技校网专门为您推荐的类似问题答案问题1&#xff1a;通过出版职业资格考试中级考试,评职称需要职称英语和计算机条件不跟随 已跟随 取消 确定 1、要看职称委员会的要求而定。 2、看你中级报的是什么中级&#xff1f;如是工程师&#xff0c;就要参加全国的职称英语和计算机考试&…

[SDOI2016]储能表

Description 有一个 n 行 m 列的表格&#xff0c;行从 0 到 n−1 编号&#xff0c;列从 0 到 m−1 编号。每个格子都储存着能量。最初&#xff0c;第 i 行第 j 列的格子储存着 (i xor j) 点能量。所以&#xff0c;整个表格储存的总能量是&#xff0c; 随着时间的推移&#xff0…

军用计算机ip等级是什么,加固计算机的IP防护等级是什么?

加固计算机的IP防护等级是什么&#xff1f;作者&#xff1a;鲁成伟业 | 时间&#xff1a;2021-04-28 09:00:43 | 人已围观加固计算机是各种现代化w器z备系统、j事电子信息系统以及国防科研系统中不可缺少的、到处可见的设备。小到嵌入式的微处理器&#xff0c;大到百万亿次级的…

SpringMvc渲染视图

这篇博文讨论的问题是从ModelAndView如何渲染到页面。 首先要知道每个请求处理完之后都会返回一个ModelAndView对象。 这里我分6种情况来分析&#xff0c;代表6种返回类型&#xff1a; ModelAndViewMap&#xff0c;ModelMapModelViewStringVoid我先贴出我的测试的后台代码&…

山西计算机工程师职称英语,山西中级工程师职称在线查询

技校网专门为您推荐的类似问题答案问题1&#xff1a;新疆石河子中级工程师职称在哪查询应该还没出&#xff0c;这里说不定有吧。。。不确定~问题2&#xff1a;武汉市中级工程师职称如何办理楼主,看你是要办那个对方的,现在大多数市面上都是随州办理的 比较容易办到 还有专科毕业…

spring3: 切面及通知实例 Aspectj的aop

1.前置通知 接口&#xff1a; package chapter1.server;public interface IHelloService {public void sayAdvisorBefore(String param) ; }实现 package chapter1.service.impl;import chapter1.server.IHelloService;public class HelloService implements IHelloService { p…

微型计算机接口与技术期末,微机原理与接口技术期末考试试题及答案.pdf

微机原理与接口技术期末考试题库1. 微机系统的硬件由哪几部分组成&#xff1f;答&#xff1a;三部分&#xff1a;微型计算机 (微处理器&#xff0c;存储器&#xff0c;I/0接口&#xff0c;系统总线)&#xff0c;外围设备&#xff0c;电源。2. 什么是微机的总线&#xff0c;分为…

html对图片轮播脚本怎么调用,【jquery前端开发】可调整的幻灯片(图片轮播)

第一次写博客&#xff0c;希望接下来写的东西 或多或少能帮到些人&#xff0c;虽然这些东西都是一些大神前辈们写了无数遍的东西&#xff0c;但我尽量以一名小白的视角把代码写得清楚点&#xff0c;好心人的就给点赞吧。1.前期准备这是我们编写代码前必须要做的事&#xff0c;在…

数据类型总结(干货)

Java中的数据类型和C的数据类型基本是一致的&#xff0c;本来以为不需要怎么看&#xff0c;后来发现还是有些地方需要好好总结一下。 基本的就不说了&#xff0c;直接上干货。 我总结了下&#xff0c;数据类型的转换和赋值有以下几点是比较麻烦的&#xff1a; 1、整数直接量可以…

计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...

电脑配置决定了一台电脑的性能好坏&#xff0c;如果电脑配置没有达到游戏或者软件的要求&#xff0c;那么肯定无法流畅运行的。对于一些小白用户不知道如何查看电脑硬件配置&#xff0c;那么本机电脑硬件配置信息怎么看&#xff1f;下面装机之家小编分享一下Win7/Win10查看详细…

软件工程网络15个人阅读作业2(201521123024丁树乐)

提出问题 question1.我看到书P27中写到“100%的代码覆盖率并不等同于100%的正确性”那么怎么样去确保100%的正确性&#xff1f; 写代码注意结构和代码规范&#xff0c;注释要写全&#xff0c;代码尽量精简&#xff0c;不要一坨坨的堆在一起。 在目前行业内的成熟方案有如下几个…

Uva 1025 - A Spy in the Metro(DP)

题目链接 https://vjudge.net/problem/UVA-1025 【题意】 某城市里的地铁是线性的&#xff0c;有n个车站&#xff08;2<n<50&#xff09;&#xff0c;有M1辆列车从第1站从左往右开&#xff0c;有M2辆列车从第n站从右往左开&#xff0c;在0时刻间谍从第一站出发&a…

未来计算机控制器趋势,未来DCS控制系统技术发展4大趋势

DCS系统是继PLC之外的一大自动化控制系统&#xff0c;它在化工、火电等领域的应用极为广泛&#xff0c;但是生产方面的自动化技术需求进一步提高&#xff0c;传统的DCS系统已不能满足需要&#xff0c;需要进行技术升级。DCS系统由多台计算机分别控制生产过程中多个控制回路&…

《Java技术》第一次作业

&#xff08;一&#xff09;、学习总结 1.在java中通过Scanner类完成控制台的输入&#xff0c;查阅JDK帮助文档&#xff0c;Scanner类实现基本数据输入的方法是什么&#xff1f;不能只用文字描述&#xff0c;一定要写代码&#xff0c;通过具体实例加以说明。 文本扫描类Scanner…