图像像素

关于视频的一些概念

南楼画角 提交于 2020-02-05 00:42:18
http://www.samirchen.com/video-concept/ 关于视频的一些概念 2016-01-28 视频相关概念 视频文件格式 文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是 .doc ,JPG 图片的文件格式是 .jpg 等等。那对于视频来说,我们常见的文件格式则有: .mov 、 .avi 、 .mpg 、 .vob 、 .mkv 、 .rm 、 .rmvb 等等。文件格式通常表现为文件在操作系统上存储时的后缀名,它通常会被操作系统用来与相应的打开程序关联,比如你双击一个 test.doc 文件,系统会调用 Word 去打开它。你双击一个 test.avi 或者 test.mkv 系统会调用视频播放器去打开它。 同样是视频,为什么会有 .mov 、 .avi 、 .mpg 等等这么多种文件格式呢?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。 视频封装格式 视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。 下面我们就列举一些文件封装格式: AVI 格式 ,对应的文件格式为

基于matlab的lsb数字水印

北战南征 提交于 2020-02-04 19:09:24
写本文的目的是记录自己做过的一些东西,深化理解,理清思路,便于回忆。 数字水印将标识信息直接嵌入数字载体,而不影响原载体的使用价值,使用者不易察觉但可以被生产方识别和辨认,可以保护信息安全,实现防伪溯源,也是信息隐藏技术的研究领域之一。 LSB(least significant bits)是最为简单的数字水印制造方法,可以保证水印不被使用人所见,但可以被制造者辨认。 算法原理:通俗来讲我们看到的图片都是由一个个小的像素点来构成的,所有像素点摆在一起,构成一个大方块,这个大方块就是我们所见的图像。灰度图像(也就是我们平时所说的黑白图像)是由一层像素点组成的,而彩色图像是由三层这样的灰度图像组成的。这里拿灰度图像举例,我们之所以能在图像上看到黑色和白色,是因为每个像素点的像素值不同。0表示纯黑,255表示纯白,灰色就是由这两个数字之间的值构成。越靠近0越黑,越靠近255越白。那为什么是0和255呢?因为计算机是二进制,它会用8个比特来表示一个像素点,所以最大值是255,最小是0。lsb就是基于2进制来隐藏信息的,因为人眼并不是很精密的颜色或亮度的感知器,所以把像素上下微调1是不会被人眼察觉的,当我们把图片每个像素的最后一位按照我们的想法改变,使他表现为我们想要的信息,这就是lsb数字水印。​​​ 首先引入一张灰度图像 (从微博上弄下来的,源程序和图片都不见了)

手淘适配-flexible

别来无恙 提交于 2020-02-04 14:04:48
目标 拿一个双11的Mobile页面来做案例,比如你实现一个类似下图的一个H5页面: 目标很清晰,就是做一个这样的H5页面。 痛点 虽然H5的页面与PC的Web页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。看看下图你就会知道,这是多么痛苦的一件事情: 再来看看手淘H5要适配的终端设备数据: 看到这些数据,是否死的心都有了,或者说为此捏了一把汗出来。 手淘团队适配协作模式 早期移动端开发,对于终端设备适配问题只属于Android系列,只不过很多设计师常常忽略Android适配问题,只出一套iOS平台设计稿。但随着iPhone6,iPhone6+的出现,从此终端适配问题不再是Android系列了,也从这个时候让移动端适配全面进入到“杂屏”时代。 上图来自于 paintcodeapp.com 为了应对这多么的终端设备,设计师和前端开发之间又应该采用什么协作模式?或许大家对此也非常感兴趣。 而整个手淘设计师和前端开发的适配协作基本思路是: 选择一种尺寸作为设计和开发基准 定义一套适配规则,自动适配剩下的两种尺寸(其实不仅这两种,你懂的) 特殊适配效果给出设计效果 还是上一张图吧,因为一图胜过千言万语: 在此也不做更多的阐述。在手淘的设计师和前端开发协作过程中:手淘设计师常选择iPhone6作为基准设计尺寸,交付给前端的设计尺寸是按 750px *

16.自定义线性滤波

耗尽温柔 提交于 2020-02-04 00:59:56
主要内容 卷积概念 常见算子 自定义卷积模糊 卷积概念 卷积是图像处理中的一个操作,是kernel在图像的每个像素上的操作 kernel本质上是一个固定大小的矩阵数组,其中心被称为锚点(anchor point) 卷积如何工作 把kernel放到像素数组上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值的操作称为卷积处理。数学表达公式如下 Sum = 8x1+6x1+6x1+2x1+8x1+6x1+2x1+2x1+8x1 New pixel = sum / (m*n) 常见算子 定义结构元素举例 Mat kernel_Robert_x =( Mat_(2, 2) << 1, 0, -1, 0); Robert算子(梯度算子, 去做图像的X方向梯度和Y方向梯度)     X方向              Y方向 sobel算子是一种常用的边缘检测算子,是一阶的梯度算法。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法 X方向(显示左右差异)    Y方向(显示上下差异) 拉普拉斯算子(显示整个的差异),边缘检测常用到 锐化算子 自定义卷积模糊 filer2D方法API filter2D ( Mat src , //输入图像 Mat dst , //模糊结果图像 int depth , /

06 OpenCV调整图像亮度与对比度

三世轮回 提交于 2020-02-03 02:04:26
一、原理及相关API dst = alpha*src + beta alpha > 0 控制图像对比度,beta是增益变量,控制图像亮度 Mat new_img = Mat::zeros(img.size(),img.type()); 创建一张和原图像大小和类型一致的空白图像,像素值初始化为0 saturate_cast<uchar>(value) 确保值范围在0~255之间 Mat.at<Vec3b>(y,x)[index] = value; 给每个像素点每个通道赋值 二、通过读写像素的方式调整亮度与对比度 # include <opencv2/opencv.hpp> # include <iostream> using namespace std ; using namespace cv ; int main ( ) { Mat src , dst ; src = imread ( "images/02.png" ) ; if ( ! src . data ) { cout << "could not load image1..." << endl ; return - 1 ; } namedWindow ( "input_image" , CV_WINDOW_AUTOSIZE ) ; imshow ( "input_image" , src ) ; int height =

OpenCV操作像素

爷,独闯天下 提交于 2020-02-02 08:47:52
在了解了图像的基础知识和OpenCV的基础知识和操作以后,接下来我们要做的就对像素进行操作,我们知道了图像的本质就是一个矩阵,那么一个矩阵中存储了那么多的像素,我们如何来操作呢?下面通过几个例子来看看像素的操作。 这个是原图,接下来的例子都是对这个图片进行操作的。 访问像素出现雪花效果 我们需要有雪花的效果,这里的雪花其实就是一个个白色的点,白色在像素值是255,所以我们的思路就是在一个图像上面的矩阵中的一些像素值转成值为255的,如果是彩色的图像的话就是三个通道,那么就是分别对三个通道的值都转为255,三通道在OpenCV里面是按照 蓝绿红 的顺序排布的。 代码实现 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <random> // Add white noise to an image void white(cv::Mat image, int n) { // C++11 random number generator std::default_random_engine generator; std::uniform_int_distribution<int> randomRow(0

Matlab的标记分水岭分割算法

半腔热情 提交于 2020-02-02 00:18:28
1 综述 Separating touching objects in an image is one of the more difficult image processing operations. The watershed transform is often applied to this problem. The watershed transform finds "catchment basins"(集水盆) and "watershed ridge lines"(山脊线) in an image by treating it as a surface where light pixels are high and dark pixels are low. 如果图像中的目标物体是连接在一起的,则分割起来会更困难,分水岭分割算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一幅“地形图”,其中亮度比较强的区域像素值较大,而比 较暗的区域像素值较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。 Segmentation using the watershed transform works better if you can identify, or "mark," foreground objects and background

数字图像处理及应用(期末复习整理)

社会主义新天地 提交于 2020-02-01 17:08:32
一、图像及其类型 图像(image)的定义是: 在一般意义下,一幅图像是一个物体或对象(object)的另一种表示。亦即图像是其所表示物体或对象信息的一个直接描述和浓缩表示。简而言之,即图像是物体在平面坐标上的直观再现。一幅图像包含了所表示物体的描述信息和特征信息,或者说图像是与之对应的物体或抽象的一个真实表示,这个表示可以通过某些技术手段实现。 数字图像处理(digital image processing): 又称为计算机图像处理,它是通过计算机对图像进行去除噪声、增强、变换、复原、分割、特征提取、识别等运算与处理。 图像的分类: 可见图像(visible image): 是指视觉系统可以直接看见的图像,这也是大多数人在日常生活中所见到的和所理解的图像,这一类图像一般通过照像、手工绘制等传统方法获得,通常计算机不能直接处理,但是经过数字化处理后可变为数字图像。 物理图像(physical image): 所反映的是物体的电磁波辐射能,包括可见光和不可见光图像。 数字图像(maths image) :指由连续函数或离散函数生成的抽象图像,其中离散函数所生成的图像就是计算机可以处理的数字图像。 其他相关概念: 计算机图形学(computer graphic): 是指利用计算机技术将概念或数学描述所表示的物体(非实物)图像进行处理和显示的过程。 计算机视觉(computer

大牛的《深度学习》笔记,Deep Learning速成教程

限于喜欢 提交于 2020-01-31 11:04:15
本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之间的关系。 深度学习 , 即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支。从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别、图像分类、文本理解等众多领域的算法设计思路,渐渐形成了一种从训练数据出发,经过一个端到端(end-to-end)的模型,然后直接输出得到最终结果的一种新模式。那么,深度学习有多深?学了究竟有几分?本文将带你领略深度学习高端范儿背后的方法与过程。 一、概述 二、背景 三、人脑视觉机理 四、关于特征 4.1、特征表示的粒度 4.2、初级(浅层)特征表示 4.3、结构性特征表示 4.4、需要有多少个特征? 五、Deep Learning的基本思想 六、浅层学习(Shallow Learning)和深度学习(Deep Learning) 七、Deep learning与Neural Network 八、Deep learning训练过程 8.1、传统神经网络的训练方法 8.2、deep learning训练过程 九、Deep Learning的常用模型或者方法 9.1、AutoEncoder自动编码器 9.2、Sparse Coding稀疏编码 9

第05&06课 修改多个像素值

吃可爱长大的小学妹 提交于 2020-01-30 09:57:19
**学科:**人工智能 年级: 七年级上 课题: 第05&06课 修改多个像素值 **课时数:**1 教学目标: 1.学会对灰度图像中多个像素的颜色逐个进行修改。 2.学会利用for循环对灰度图像中某一行或者列(几行或者几列)多个连续像素的颜色进行修改。 3.学会利用for循环对灰度图像中某个(或者几个)区域的像素颜色进行修改。 4.学会将图像中某一区域修改为彩色。 教学重点: 学会利用for循环对灰度图像某一行或者列多个连续像素的颜色进行修改。 教学难点: 学会利用for循环对灰度图像几行或者几列像素的颜色进行修改。 教学准备: 示例图像,代码。 教学过程 一、开放导入 上节课学习了修改某个像素的颜色,我们先复习一下代码。 import cv2 img = cv2 . imread ( 'white.bmp' ) img [ 10 , 30 ] = 0 print ( img [ 10 , 30 ] ) cv2 . imshow ( 'image' , img ) cv2 . imwrite ( 'pic1.bmp' , img ) cv2 . waitKey ( 0 ) #等待按键 cv2 . destroyAllWindows ( ) #关闭窗口 哪位同学能说一下第2到第6行代码的含义? 如果要修改图像中多个像素的值,应该怎么办? 二、核心过程推进 1.修改white.bmp