图像处理---平滑处理(柔化效果)

转自:图像处理:柔化(平滑)处理

1.效果图:
 

2.算法说明:
         柔化(平滑)处理是将原图像的每个像素的颜色值用与其相邻的n*n个像素的平均值来代替,
         可利用算术平均值或加权平均值来计算。
         例如3*3的点阵,设源图像某像素的值为f(i,j):


f(i-1,j-1)


f(i-1,j)


f(i-1,j+1)


f(i,j-1)


f(i,j)


f(i,j+1)


f(i+1,j-1)


f(i+1,j)


f(i+1,j+1)

3.实现代码:

1        /// <summary>
 2        /// 算术平均值实现柔化   
 3         /// </summary>
 4        /// <param name="img">原始图像</param>
 5        /// <returns></returns>
 6        public static Image SmoothImage(Image img)
 7        {
 8            int width = img.Width;
 9            int height = img.Height;
10
11            Bitmap oldImg = (Bitmap)img;
12            Bitmap newImg = new Bitmap(width, height);  //实例一个与原图像一样大小的对象
13
14            Color color = new Color();
15            int r, g, b;            //存放图像颜色点的R、G、B值            
16            int rAvg, gAvg, bAvg;   //存放某一点与相邻点平均值后的R、G、B值
17
18            //循环得到图像的每一个像素点
19            for (int i = 1; i < width - 1; i++)
20            {
21                for (int j = 1; j < height - 1; j++)
22                {
23                    int rSum = 0, gSum = 0, bSum = 0;   //存放3*3点阵R、G、B值的和
24
25                    //取得与某一点相邻的3*3个像素点
26                    for (int row = -1; row <= 1; row++)
27                    {
28                        for (int col = -1; col <= 1; col++)
29                        {
30                            color = oldImg.GetPixel(i + row, j + col);
31                            r = color.R;
32                            g = color.G;
33                            b = color.B;
34                            
35                            rSum += r;
36                            gSum += g;
37                            bSum += b;
38                        }
39                    }
40                    //相邻点的算术平均值
41                    rAvg = (int)(rSum / 9);
42                    gAvg = (int)(gSum / 9);
43                    bAvg = (int)(bSum / 9);
44
45                    //处理颜色值得溢出
46                    rAvg = rAvg < 0 ? 0 : rAvg;
47                    rAvg = rAvg > 255 ? 255 : rAvg;
48                    gAvg = gAvg < 0 ? 0 : gAvg;
49                    gAvg = gAvg > 255 ? 255 : gAvg;
50                    bAvg = bAvg < 0 ? 0 : bAvg;
51                    bAvg = bAvg > 255 ? 255 : bAvg;
52
53                    //设置新对象的每一点的颜色值
54                    newImg.SetPixel(i,j,Color.FromArgb(rAvg,gAvg,bAvg));
55                }
56            }
57            return newImg;
58        }

1        /// <summary>
 2        /// 加权平均值实现柔化
 3         /// </summary>
 4        /// <param name="img">原始图像</param>
 5        /// <returns></returns>
 6        public static Image SmoothImageWeight(Image img)
 7        {
 8            int width = img.Width;
 9            int height = img.Height;
10
11            Bitmap oldImg = (Bitmap)img;
12            Bitmap newImg = new Bitmap(width, height);  //实例一个与原图像一样大小的对象
13
14            Color color = new Color();
15            int r, g, b;            //存放图像颜色点的R、G、B值    
16            int rAvg, gAvg, bAvg;   //存放某一点与相邻点平均值后的R、G、B值
17            int[] gauss = { 1, 2, 1, 2, 4, 2, 1, 2, 1 };    //高斯模版
18
19            //循环得到图像的每一个像素点
20            for (int i = 1; i < width - 1; i++)
21            {
22                for (int j = 1; j < height - 1; j++)
23                {
24                    int index = 0;                      //高斯模版数组的索引
25                    int rSum = 0, gSum = 0, bSum = 0;   //存放按高斯模版所得点阵R、G、B值的和
26                    for (int row = -1; row <= 1; row++)
27                    {
28                        for (int col = -1; col <= 1; col++)
29                        {
30                            color = oldImg.GetPixel(i + row, j + col);
31                            r = color.R;
32                            g = color.G;
33                            b = color.B;                            
34
35                            rSum += r * gauss[index];
36                            gSum += g * gauss[index];
37                            bSum += b * gauss[index];
38
39                            index++;
40                        }
41                    }
42                    //相邻点的加权平均值,"16" 为3*3高斯模版权重的总和
43                    rAvg = rSum / 16;
44                    gAvg = gSum / 16;
45                    bAvg = bSum / 16;
46
47                    //处理颜色值得溢出
48                    rAvg = rAvg < 0 ? 0 : rAvg;
49                    rAvg = rAvg > 255 ? 255 : rAvg;
50                    gAvg = gAvg < 0 ? 0 : gAvg;
51                    gAvg = gAvg > 255 ? 255 : gAvg;
52                    bAvg = bAvg < 0 ? 0 : bAvg;
53                    bAvg = bAvg > 255 ? 255 : bAvg;
54
55                    //设置新对象的每一点的颜色值
56                    newImg.SetPixel(i, j, Color.FromArgb(rAvg, gAvg, bAvg));
57                }
58            }
59            return newImg;
60        }
61    }

4.知识点说明:
      a.加权平均值与算术平均值:
         **加权平均值:
             将各数值乘以相应的单位数,然后加总求和得到总体值,再除以总的单位数;
             平均数的大小不仅取决于总体中各单位的标志值(变量值)的大小,而且取决于各标志值出现的次数(频数);
             由于各标志值出现的次数对其在平均数中的影响起着权衡轻重的作用,因此叫做权数或权重。
         **算术平均值:
             (a1+a2+……an)/n为这几个数的算术平均值
         **举例:
             下面是一个同学的某一科的考试成绩:平时测验 80, 期中 90, 期末 95 。
              学校规定的科目成绩的计算方式是:平时测验占 20%;期中成绩占 30%;期末成绩占 50%;
              加权平均值 = (80*20% + 90*30% + 95*50%)/(20%+30%+50%) = 90.5 
              算数平均值 = (80 + 90 + 95)/3 = 88.3 
      b.高斯模版:
           3*3高斯模版:
                   1   2    1
                   2   4    2     *(1/16)
                   1   2    1
           详细参见:http://www.cnblogs.com/hoodlum1980/articles/1088567.html

图像处理---平滑处理(柔化效果)

时间: 2024-08-29 01:48:47

图像处理---平滑处理(柔化效果)的相关文章

Atitit &#160;&#160;图像处理&#160;平滑&#160;也称&#160;模糊,&#160;归一化块滤波、高斯滤波、中值滤波、双边滤波)

Atitit   图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: 归一化块滤波器 (Normalized Box Filter) § 最简单的滤波器, 输出像素值是核窗口内像素值的 均值 ( 所有像素加权系数相等) § 高斯滤波器 (Gaussian Filter) § 最有用的滤波器 (尽管不是最快的). 高斯滤波是将输入数组的每一个像素点与 高斯

图像处理之基础---卷积,滤波,平滑

/*今天师弟来问我,CV的书里到处都是卷积,滤波,平滑……这些概念到底是什么意思,有什么区别和联系,瞬间晕菜了,学了这么久CV,卷积,滤波,平滑……这些概念每天都念叨好几遍,可是心里也就只明白个大概的意思,赶紧google之~ 发现自己以前了解的真的很不全面,在此做一些总结,以后对这种基本概念要深刻学习了~*/ 1.图像卷积(模板) (1).使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)

图像处理基本概念——卷积,滤波,平滑(转载)

/*今天师弟来问我,CV的书里到处都是卷积,滤波,平滑--这些概念到底是什么意思,有什么区别和联系,瞬间晕菜了,学了这么久CV,卷积,滤波,平滑--这些概念每天都念叨好几遍,可是心里也就只明白个大概的意思,赶紧google之~ 发现自己以前了解的真的很不全面,在此做一些总结,以后对这种基本概念要深刻学习了~*/ 1.图像卷积(模板) (1).使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)

【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯平滑.不同算子的图像锐化知识.希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生. [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解 [数字图像处理]四.MFC对话框绘制灰度直方图 [数字图像

【图像处理笔记】平滑空间滤波器

平滑空间滤波器是低频增强的空间滤波技术.它的目的有两类:一是模糊处理,二是降低噪声.本文介绍的平滑空间滤波器也分为两类,一类是线性滤波器,比如最简单的简单平均法:另一类是统计排序滤波器. 下面我们先来说说平滑线性滤波器. 平滑线性空间滤波器的输出(响应)是包含在滤波器模板邻域内的像素的简单平均值.这些滤波器有时也称为均值滤波器.也可以把它们归入低通滤波器. 这种处理的结果降低了图像灰度的尖锐变化.由于典型的随机噪声由灰度级的急剧变化组成,因此常见的平滑处理的应用就是降噪. 然而,由于图像边缘(几

【数字图像处理】图像的平滑处理

图像平滑的目的 模糊:在提取较大目标前,去除太小细节,或将目标内的小间断连接起来. 消除噪声:改善图像质量,降低干扰. 平滑处滤波对图像的低频分量增强,同时削弱高频分量,用于消除图像中的随机噪声,起到平滑作用. 图像平滑处理的基本方法 领域平均法 领域加权平均法 选择式掩模法 中值滤波 领域平均法 模板在图像上移动,模板的中心对应目标像素点,在模板范围内对目标像素点进行卷积运算(对应系数乘对应像素点),然后相加除上模板大小得到均值,这个均值就是目标像素点处理后的值. 如图,对5行四列的图像进行3

Python下opencv使用笔记(五)(图像的平滑与滤波)

对于图形的平滑与滤波,但从滤波角度来讲,一般主要的目的都是为了实现对图像噪声的消除,增强图像的效果. 首先介绍二维卷积运算,图像的滤波可以看成是滤波模板与原始图像对应部分的的卷积运算.关于卷积运算,找到几篇相关的博客: 图像处理:基础(模板.卷积运算) 图像处理-模板.卷积的整理 对于2D图像可以进行低通或者高通滤波操作,低通滤波(LPF)有利于去噪,模糊图像,高通滤波(HPF)有利于找到图像边界. (一)统一的2D滤波器cv2.filter2D Opencv提供的一个通用的2D滤波函数为cv2

学习笔记(2)---Matlab 图像处理相关函数命令大全

Matlab 图像处理相关函数命令大全 一.通用函数: colorbar  显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \

学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算.形态学梯度."顶帽"."黑帽"等等. 第二件事,是浅墨想跟大家做一个关于OpenCV系列文章的书写内容和风格的思想汇报. 是这样的,浅墨发现最近几期写出来的文章有些偏离自己开始开这个专栏的最初的愿望--原理和概念部分占的