像素

图形学入门(3)——区域填充算法(region filling)

China☆狼群 提交于 2019-12-03 12:04:13
继续图形学之旅,我们已经解决了如何画线和画圆的问题,接下来要解决的是,如何往一个区域内填充颜色?对一个像素填充颜色只需调用SetPixel之类的函数就行了,所以这个问题其实就是:如何找到一个区域内的所有像素? 区域的表示方法 定义一个区域可以有两种方法,即 内点表示法 和 边界表示法 ,内点表示就是指用一种颜色表示区域内的点,只要当前像素是这种颜色就在区域内,边界表示就是用一种颜色表示区域边界,只要当前像素是这种颜色就表示到达了区域边界。 简单的种子填充算法 最简单暴力的填充算法即是从区域内一点出发,向四周扩散填充,到达区域边界时停止,常见的有 四邻法 和 八邻法 两种,顾名思义,一个是向上下左右四个方向扩散填充,另一个是向周围八个方向扩散,四邻法可以确保不溢出区域边界,但有可能出现一次填不满区域的情况,八邻法则相反,一定能填充满当前区域,但有从对角线溢出边界的危险。 边界表示的四邻法代码实现: void BoundaryFill4(HDC hdc, int x, int y, COLORREF boundaryColor, COLORREF newColor) { COLORREF c = GetPixel(hdc, x, y); if (c != newColor && c != boundaryColor) { SetPixel(hdc, x, y, newColor);

通过自适应卷积的视频帧插值——CGB

我的梦境 提交于 2019-12-03 04:36:27
论文链接:https://arxiv.org/abs/1703.07514 论文题目: Video Frame Interpolation via Adaptive Convolution (通过自适应卷积的视频帧插值) 发表时间: 2017 年 CVPR 作者及其背景: Simon Niklaus, Long Mai, Feng Liu (波特兰州立大学 Portland State University ) 1.提出问题    传统视频帧插值方法是两步走:运动估计和像素合成。运动估计一般使用光流法 optical flow ,光流法的难点在于遮挡,污渍和突然的光环境变化。基 于流的像素综合也不能很可靠地处理遮挡的问题。 2.解决办法     之前的插值是两步走的:运动估计 motion estimation 和像素合成 pixel synthesis 。文章提出了一种鲁棒的视频帧插值方法,该方法使用深度卷积 神经网络实现帧插值,而无需将其明确划分为单独的步骤。这个方法中用来生成插值帧 interpolated frame 的“像素合 成”法 pixel synthesis ,就是作用在 两个输入图像之间局部卷积 local convolution ( 也就是说,对两张输入图片进行像素级别的卷积,可以生成一张 插值图片 )。这个卷积核作者号称可以捕获两帧图片之间的局部运动

算法题 18 像素翻转 牛客网 CC150

匿名 (未验证) 提交于 2019-12-03 00:41:02
算法题 18 像素翻转 牛客网 CC150_P114 题目描述 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5,2],[9,6,3]] 解题代码: # -*- coding:utf-8 -*- class Transform: def transformImage(self, mat, n): # write code here # layer表示从外围到里面共有多少层 # 总共有layer=0,1,2,...,(n+1)//2层 for layer in range(0,(n+1)//2+1 ): first = layer last =n-layer-1 for i in range(first,last): offset =i- first # 存储上边 top= mat[first][i] # 从左到上 mat[first][i]=mat[last- offset][first] # 从下到左 mat[last-offset][first]=mat[last]

vue rem移动端适配

匿名 (未验证) 提交于 2019-12-03 00:39:02
*/ /*--> */ /*--> */ /*--> */ /*--> */ 参考: https://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html 首先先弄清楚几个基本的原理知识: :又称设备像素,是显示设备中一个最微小的物理部件; :可认为是计算机坐标系统中的一个点,这个点代表一个可以由程序使用的虚拟像素(比如说CSS像素),然后由相关系统转换为物理像素 设备像素比 = 物理像素 / 设备独立像素, 可通过js的window.devicePixelRatio获取,或css的-webkit-device-pixel-ratio ********ps: 1、安装fleible 2、在main.js引入 Import ‘lib-flexible’ 3、安装px2rem,使得我们在开发中不需要自己手动计算,照常写px npm install px2rem-loader --save-dev 4、在build目录下的utils.js修改配置 */ /*--> */ /*--> */ /*--> */ /*--> */ 重新开启项目, 750 设计稿,按设计稿来写 px; 注意要点:1、在index.html的头部,不要设置meta name=‘viewport‘; 个人看法:对于flexible适配方案,查阅源码

PAT 乙级1068 万绿丛中一点红(20 分)

匿名 (未验证) 提交于 2019-12-03 00:38:01
对于计算机而言,颜色不过是像素点对应的一个 24 位的数值。现给定一幅分辨率为 M × N 的画,要求你找出万绿丛中的一点红,即 有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充分大。 输入格式: 输入第一行给出三个正整数,分别是 M 和 N ( ≤ 1000),即图像的分辨率;以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑。随后 N 行,每行给出 M 个像素的颜色值,范围在 [ 0 , 2 2 4 ) 内。所有同行数字间用空格或 TAB 分开。 输出格式: 在一行中按照 (x, y): color 的格式输出所求像素点的位置以及颜色值,其中位置 x 和 y 分别是该像素在图像矩阵中的列、行编号(从 1 开始编号)。如果这样的点不唯一,则输出 Not Unique ;如果这样的点不存在,则输出 Not Exist 。 输入样例 1: 8 6 200 0 0 0 0 0 0 0 0 65280 65280 65280 16711479 65280 65280 65280 65280 16711479 65280 65280 65280 16711680 65280 65280 65280 65280 65280 65280 65280 65280 65280 165280 165280 65280 65280

Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artwork

匿名 (未验证) 提交于 2019-12-03 00:37:01
论文地址:https://arxiv.org/pdf/1603.01768.pdf ժҪ 获取 image 的 semantic annotation 的两种方式,人为自行标注以及用 semantic segmentation 的算法;思想是用网络中的深层卷积得到的特征进行生成。 Introduction 尽管风格迁移做的很好,用户都需要尤其注意图片的构造以及风格图片的选择。 现有风格迁移存在的问题,造成的原因主要是以下两点: CNN 主要的用途在于对风格特征进行提取,比如纹理等;但是其结构对于合成方面并没有很大的贡献; 更深层的layer 具有更有意义的信息,但是在生成模型中用处不大。 因此作者的目标就是缩小生成模型和像素级分类神经网络之间的差距。此时用的网络结构一般是用可以在生成阶段中运用的语义信息提升之后的图片合成网络结构 (Simonyan and Zisseman 2014) 。 Related Work 以前的算法主要氛围 Gram-based 和 Patch-based 两种。在前一种算法中,像素的局部信息都被扔掉了,保留下来的是不同通道的激活值之间的相关性。 glitches 的产生大多是由于整体的统计量只专注于向着目标图片进行优化,而忽略了其自身的分布,并且丝毫不理解局部像素的 context 。而在第二种算法中,作者在 style 和 content

第2章 计算机图形系统概述

匿名 (未验证) 提交于 2019-12-03 00:37:01
备注: * 为重要内容 硬件与软件示意图 硬件 输入设备 输出设备 存储设备 图形处理设备 软件 软件包 应用程序 应用模型 计算:图形处理(如图形变换、光照等) 存储:远程和本机 输入:人机交互及数据文件等 输出:显示器、打印机等 对话图形:人机交互 显示器: (1)阴极射线管CRT CRT与彩色CRT【射线穿透、影孔板法】 、 (2)平板型显示器 共同特点 都是通过单个发光元素(点,像素)来显示图形或文字。 不同点 (1)LCD体积小,厚度薄,重量轻,耗能少,无辐射。 (2)CRT显示亮度高,色彩鲜艳,分辨率高。 (1) 像素(Pixel: Picture Cell):构成屏幕(图像)的最小元素 (2) 分辨率(Resolution) CRT在水平或竖直方向单位长度上能识别的最大像素个数,单位通常为dpi(dots per inch) 在假定屏幕尺寸一定的情况下,也可用整个屏幕所能容纳的像素个数描述,如640*480,800*600, 1024*768,1280*1024 等等 (3) 分辨率越高显示的图形就越精细 显示设备:显示器 视频控制器:控制显示设备(有的含图形加速处理器), 通过访问帧缓存来刷新屏幕 显示缓冲器:可以在内存或显示控制器中 电子束可以任意移动。画线设备 (1) 特点 电子束可随意移动,只扫描荧屏上要显示的部分像素 对应的显示器为画线设备的 (2)

背景分割算法评测标准研究

匿名 (未验证) 提交于 2019-12-03 00:34:01
### IOU: 1. segmentation accuracy: 计算方式: segmentation accuracy = true positives /(true positives+ false positives + false negatives) 在像素层面计算,即计算每个类别的IOU和所有类别IOU的平均值 Code: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html#devkit VOCevalseg.m 2. Average Precision (AP) : 计算方式: AP指的是precision/recall曲线下的面积,计算流程如下: 1. 根据IOU阈值(一般为0.5)判断检测框是否正确 2. 根据confidence对结果排序,计算top-1, 2, …N对应的precision和recall, N为样本总数 3. 将recall划分为n个区间t in [t1, …, tn] 4. 找出满足recall>=t的最大presicision 5. 最后得到n个最大precision, 求它们的平均值 __注:__VOC2007和VOC2010及之后的版本在步骤3上有一些差别,VOC2007在recall区间上是均等分,如[0,0.1,0.2…,0.9,1.0]

bmp格式研究

匿名 (未验证) 提交于 2019-12-03 00:34:01
使用 HexEditor Neo 工具 查看 生成的 BMP文件: 看图: 图中的 0x00 到 0x35 共0x36个字节,0x36 = 54 为 BMP 文件头。 接下来的为调色板: 4个字节为00 00 00 00 对应:00000000( 数值:0x00000000) 黑色 再接下来的 4个字节为FF FF FF 00 对应: FFFFFF00 ( 数值:0x00FFFFFF) 白色 调试板之后的为象素数据: 0F F0 FE 00 对应的是 最下面一行: BMP数据如下: 42 4 d 5 e 00 00 00 00 00 00 00 3 e 00 00 00 28 00 00 00 18 00 00 00 08 00 00 00 01 00 01 00 00 00 00 00 20 00 00 00 c3 0 e 00 00 c3 0 e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff 00 0f f0 fe 00 7f 3f 1f 00 fe fc f8 00 55 0f aa 00 80 ff ff 00 fc f8 f0 00 ff 00 ff 00 00 ff 00 00 Bmp格式,关于BITMAPFILEHEADER 和 BITMAPINFOHEADER 不说了,网络上全都有。 从0x36字节开始说起

opencv(二)操作像素

匿名 (未验证) 提交于 2019-12-03 00:33:02
为了编写计算机视觉应用,我们必须会存取图像的内容,如修改或者创建图像,这些过程都需要对图像的基本元素进行操作,即所谓的像素。 1【存取像素值】 为了存取矩阵元素,我们需要在代码中指定元素所在的行和列,程序会返回相应的元素。如果是单通道的,返回值是单个数值;如果是多通道的,返回值是一组向量(Vector)。 我们先通过一个简单的例子演示如何直接存取像素值。在图像随机添加一些椒盐噪点,随机将一些像素设置为白色或者黑色。在传输过程中,如果部分像素值丢失,那么这种噪点就会出现。首先写一个简单的函数 void salt(cv::Mat&image, int n) { } 函数功能很简单,就不介绍了。 测试程序如下 效果如下所示 2【通过指针遍历图像】 通过一个颜色缩减函数来说明指针遍历图像的方法。主要函数如下 void colorReduce(const cv::Mat& image, cv::Mat& result, int div = 64) { } 运行效果如下所示 成员变量cols代表图像的列数(宽度),rows代表图像的行数(高度),step代表以字节为单位的图像的有效宽度。即使你的图像的元素类型不是uchar,step仍然代表着行的字节数。像素的大小可以油elemSize函数得到:对于一个三通道的short行矩阵(CV_16SC3),elemSize返回6