简单的图像滤镜运算法则
来源:互联网 发布:网络直播娱乐化的节目 编辑:程序博客网 时间:2024/04/29 22:18
简单的图像滤镜运算法则
位图文件主要存储的是一个一个的像素,它是一个长乘宽的二维数组,每一个数组元素都是一个RGB
struct,里面有3个Byte(字节),分别存储着RGB(即红绿蓝)三原色的值,从0到255,数字越大颜色越
亮,(0,0,0)代表黑色,(255,255,255)代表白色。
我们假设有一个非常小的位图图像(height=2,width=4),那么它在内存中最重要的部分(也就是像素
存储部分)可以表示为:
(0,0,0) (0,0,0)(0,0,0)
(0,0,0) (0,0,0)(0,0,0)
(0,0,0) (0,0,0)(0,0,0)
如果它存储在数组pixel[2][4]中,改变为灰色的位图很简单只需把它的值改为:
(127,127,127)(127,127,127)(127,127,127)
(127,127,127)(127,127,127)(127,127,127)
(127,127,127)(127,127,127)(127,127,127)
下面说说滤镜(filter)和卷积(convolution),举个例子说明:
有一个4*4的图像存储在G[i][j](i,j=0~3)中:
2 2 2 2
3 2 3 3
4 6 4 5
5 6 6 6
有一个3*3的滤镜F[i][j](i,j=0~2);
1 2 1
1 1 1
1 1 1
二者如何卷积(convolution)运算呢?假设产生的新图为N[i][j],N*F的卷积为:
N[i][j]=G[i-1][j-1]*F[i-1][j-1]+G[i][j-1]*F[i][j-1]+G[i+1][j-1]*F[i+1][j-1]+G[i-1][j]*F[i-
1][j]+G[i][j]*F[i][j]+G[i+1][j]*F[i+1][j]+G[i+1][j-1]*F[i+1][j-1]+G[i][j+1]*F[i][j+1]+G
[i+1][j+1]*F[i+1][j+1]
例如,要计算N[1][1]等于多少?说的具体点就是将这个滤镜套在旧图G上,将滤镜的中心F[1][1]与G[1]
[1]对齐,然后将重合的地方相乘,再将它们加起来,结果是:
N[1][1]为:
2 2 2 2
3 3.2 3 3
4 4.3 4.5 5
5 6 6 6
新图的N[1][1]点的值是原来旧图G[1][1]点的四周8个点,和本身加起来求和,又除以9的结果,实际上是
实现了邻域平均,图像编的模糊和柔化了。这里的F[i][j]就是邻域平均的一种滤镜。
- 简单的图像滤镜运算法则
- 复数的运算法则
- 极限的运算法则
- Python-OpenCV 处理图像(二):滤镜和图像运算
- Python-OpenCV 处理图像(二):滤镜和图像运算
- 图像滤镜的基本方法
- 简单图像运算
- Google的排名运算法则
- BCD码的运算法则
- 集合运算的基本法则
- 常用的微分运算法则
- 简单的运营法则
- PyQt&opencv 图像处理(4):简单的逐点图像操作vignette(晕影滤镜)
- Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作
- android webservice 本地服务器的搭建 简单的运算法则的实现(五)
- 图像Filter之--层的滤镜
- iOS 图像的滤镜效果实现
- Canvas几种图像滤镜的实现
- 利用C#轻松创建不规则窗体
- 设置oracle中的blob字段,将xml文件写入到数据库中
- 爱情守则
- GDI+中发生一般性错误之图片转化为字节数组
- XML解析器及相关概念介绍
- 简单的图像滤镜运算法则
- 文件夹属性批量修改工具
- c# + word = hell
- java 上传图片
- 护航旺旺的立项
- 超级玛丽制作揭秘文档发布
- java api 全集 【API JDK1.6中文版】
- flex 上传图片
- c/java 编写window 服务