图像像素

重新认识C#: 玩转指针

Deadly 提交于 2019-12-23 04:45:12
许多文章并不鼓励在C#下使用指针开发,不过,本文偏偏要这样做。在大量尝试C#下使用指针开发之后,你会对C#有更深的认识。 在说C#下的指针之前,需要提一下C++/CLI。C++/CLI 我们可以把它看作两部分:Native C++和 Managed C++,两者可以无缝结合。对C#,我们也可以把它看作两部分:Managed C# 和 Unmanaged C#。Managed C# 和 Unmanaged C# 是我杜撰的两个词,前者就是我们通常的C#,后者就是使用指针、Struct和非托管内存的C#。事实证明,Unmanaged C#也可以玩的十分优雅——它具有C语言的大部分特性,却比C语言好用的多。 C# 与 C++/CLI之间的对应关系见下图: C++/CLI默认是 Native C++,而C# 默认是 Unmanaged C# 。除了不能内嵌汇编以及编译方式不同之外,C++/CLI和C#两者在层面上几乎是等价的。其中,C++/CLI略微偏底层一点,C#略微偏高层一点。尽管略微偏高层一点,C#仍然可以当成准系统语言来玩。你可以将Unmanaged C# 当作 mini c 来玩,区别只是,C 语言一般是编译执行的,而 Unmanaged C# 是先编译成 IL ,再使用Ngen编译成机器码或在运行时编译成机器码执行。 在C#下不鼓励使用指针,这是因为C#的定位是应用级的开发

【论文阅读笔记】 LaneNet

被刻印的时光 ゝ 提交于 2019-12-21 20:19:06
论文名称:《Towards End-to-End Lane Detection an Instance Segmentation Approach》 论文链接: https://arxiv.org/abs/1802.05591 参考代码(非官方): https://github.com/MaybeShewill-CV/lanenet-lane-detection 综述 背景介绍 传统车道线检测方法主要依赖于高度专门化,手工提取特征和启发式方法来分割车道线。在传统方法中,较为常见的手工特征有基于颜色的特征、结构传感器特征、Ridge特征等,结合Hough变换或卡尔曼滤波等方法实现车道线识别。识别出车道线之后,利用后期图像处理技术过滤掉误检等情况得到最终车道线。 近些年来,更为流行的方法是用深度网络提取深度特征代替手工特征,实现如像素级别的车道线分割。目前流行的深度学习车道线检测方法可以很好地分割出车道线像素,其较为大的感受野可以在标注模糊或无标注的情况下估计出大致车道线。 然而这些方法产生的二值化车道线分割图仍需要分离得到不同的车道实例。为处理这个问题,一些方法采用后处理来解决,主要是用启发式的方法,比如几何特性。但启发式方法计算量大且受限于场景变化鲁棒性问题。另一条思路是将车道检测问题转为多类别分割问题,每条车道属于一类,这样能实现端到端训练出分类好的二值图像

python将二值化图像像素值变为0和1并写成txt文件

你说的曾经没有我的故事 提交于 2019-12-21 14:27:20
import os from PIL import Image def init ( fileList , n ) : for i in range ( 2 , n ) : img = Image . open ( "G:\\detect\\" + str ( fileList [ i ] ) ) new_img = img . resize ( ( 32 , 32 ) ) w , h = new_img . size with open ( "G:\\detect\\chepai" + str ( i ) + ".txt" , "w" ) as f : for c in range ( h ) : for j in range ( w ) : f . write ( str ( int ( ( 255 - ( new_img . getpixel ( ( j , c ) ) ) ) / 255 ) ) ) if j == w - 1 : f . write ( "\n" ) f . close ( ) if __name__ == "__main__" : fileList = os . listdir ( "G:\\detect" ) n = len ( fileList ) init ( fileList , n ) 可用作识别手写数字数据集。 来源: CSDN 作者:

OpenGL 状态管理和绘制几何体

╄→尐↘猪︶ㄣ 提交于 2019-12-20 23:39:58
  虽然使用OpenGL可以绘制复杂、有趣的图形,但这些图形都是由几种基本图元构成的(达芬奇的作品都是使用画笔和画刷完成的)。   最抽象角度看,三种基本的绘图操作:清空窗口、绘制几何体和绘制光栅物体。光栅物体包括二维图像、位图和字符字体等。   OpenGL中,除非特别声明,否则调用绘图函数后,将立刻绘制指定的物体。这看似理所当然,但在有些系统中,首先建立一个要绘制的物体列表,然后命令图形硬件绘制列表中的物体。前一种方式被称为直接模式,OpenGL中默认采用这种模式。除直接模式外,还可以将命令存储在列表中,供以后使用。直接模式更易于编程,但显示列表的效率更高。    绘图补救工具箱(为什么叫这个名字)   1.清空窗口 :在计算机屏幕上绘制不同于在纸上绘图。纸张最初是白色的,只需绘图即可;在计算机上,存储图像的内存中通常包含最后绘制的图像,因此在绘制新场景之前,需要使用某种背景颜色将其清除。为什么要清屏而不绘制一个足够大、颜色适当的矩形来覆盖整个窗口?首先,清屏函数的效率比绘图绘图函数高得多;其次OpenGL允许程序员随意地设置坐标系、观察位置和观察方向,因此要指定一个大小和位置合适的清屏矩形是极其困难的;最后,在很多计算机上,图形硬件中除了存储像素颜色的缓存外还包含多个其他的缓存。这些缓存也必须随时进行清楚,如果能用一条命令清楚所有缓存将会非常方便。   另外

再谈前端性能优化

最后都变了- 提交于 2019-12-20 00:16:04
好的设计应该简单,而且始终可以提供最佳性能。 一、优化原因 谷歌的数据表明,一个有10条数据0.4秒可以加载完的页面,在变成30条数据加载时间为0.9秒后,流量和广告收入减少了20%。当谷歌地图的首页文件大小从100kb减少到70~80kb时,流量在第一周涨了10%,接下来的三周涨了25%。 腾讯的前端工程师根据长期的数据监控也发现页面的一秒钟延迟会造成9.4%的PV的下降,8.3%跳出率的增加以及3.5%转化率的下降。 可以看出,性能优化商业上来说很重要。 但是,更重要的还是屏幕前我们的用户,让用户在使用产品时有更快更舒适的浏览体验,这算是一种前端工程师的自我修养。 二、优化目标 以让用户满意为目标呈现网页是终极的目标。当然页面速度要快,不过快只是构成满意的一个因素。 我们使用Google团队提出的RAIL模型作为优化的目标。 目前国内包括腾讯在内的团队都在使用这个评估方案。 Response:100ms内响应; Animation:10ms内生成一帧; Idle:最大程度增加空闲时间; Load:1000ms内呈现内容; 1)以用户为中心 User-centered 用户是性能优化的中心,一切性能优化皆是为了用户获得更佳的体验。 那么,我们的用户如何评价性能延迟: 0-16ms 用户可以感知每秒渲染 60 帧的平滑动画转场。也就是每帧 16 毫秒 留给应用大约 10

自适应网页设计(Responsive Web Design)

♀尐吖头ヾ 提交于 2019-12-19 04:49:31
自适应网页设计(Responsive Web Design)   随着3G的普及,越来越多的人使用手机上网。 移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?   手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。   很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。 于是,很早就有人设想,能不能"一次设计,普遍适用",让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)? 一、"自适应网页设计"的概念   2010年,Ethan Marcotte提出了 "自适应网页设计" (Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。 他制作了一个 范例 ,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。

深度学习-图像数据增强

别说谁变了你拦得住时间么 提交于 2019-12-19 01:29:54
1. 引言 在深度学习中,为了丰富图像数据的训练集,更好的提取图像特征,泛化模型(防止模型过拟合),一般都会对图像数据进行数据增强(Data Augmentation)。 2. 数据增强 在深度学习中,为了避免出现过拟合(Overfitting),通常我们需要输入充足的数据量。若数据量比较小,可以对原有的图像数据进行几何变换,改变图像像素的位置并保证特征不变。 数据增强,一般常用的方式有旋转图像,剪切图像,改变图像色差,扭曲图像特征,改变图像尺寸大小,增强图像噪音(一般使用高斯噪音,椒盐噪音)等。但是需要注意,尽量不要加入其他图像轮廓的噪音。 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向; 翻转变换(flip): 沿着水平或者垂直方向翻转图像; 缩放变换(zoom): 按照一定的比例放大或者缩小图像; 平移变换(shift): 在图像平面上对图像以一定方式进行平移; 可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置; 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度; 对比度变换(contrast): 在图像的HSV颜色空间

C#图片处理常见方法性能比较

泄露秘密 提交于 2019-12-18 21:36:06
在.NET编程中,由于GDI+的出现,使得对于图像的处理功能大大增强。在文通过一个简单黑白处理实例介绍在.NET中常见的图片处理方法和原理并比较各种方法的性能。 黑白处理原理:彩色图像处理成黑白效果通常有3种算法; (1).最大值法: 使每个像素点的 R, G, B 值等于原像素点的 RGB (颜色值) 中最大的一个; (2).平均值法: 使用每个像素点的 R,G,B值等于原像素点的RGB值的平均值; (3).加权平均值法: 对每个像素点的 R, G, B值进行加权 自认为第三种方法做出来的黑白效果图像最 "真实". 1.GetPixel方法 GetPixel(i,j)和SetPixel(i, j,Color)可以直接得到图像的一个像素的Color结构,但是处理速度比较慢. /// <summary> /// 像素法 /// </summary> /// <param name="curBitmap"></param> private void PixelFun(Bitmap curBitmap) { int width = curBitmap.Width; int height = curBitmap.Height; for (int i = 0; i <width; i++) //这里如果用i<curBitmap.Width做循环对性能有影响 { for (int j = 0;

DR特征分割

余生颓废 提交于 2019-12-18 11:36:27
本文为2019年西安交通大学计算机辅助诊断答辩综述的糖尿病视网膜病变特征分割部分 DR特征分割 1 分割综述 在医学临床上,医生首先要知道的是病灶的位置、大小以及和周围正常组织之间的关系,这可以通过分割过程来达到这个目的。 而在DR诊断中,常需要将血管、微动脉瘤、渗出物等特征分割出来,以便医生判断病情。(我们着重讲述分割血管。) 2 分割挑战 在眼底成像过程中,不同深度的视网膜结构投射到具有最大强度的二维图像上,会导致非血管结构的重叠,和低对比度图像中细血管的可见性降低。 成像会引入伪影、不均匀照明等不利因素。 中央凹、视盘、视网膜边界、硬性渗出物、出血和其他病理改变呈现出复杂的情况,需要考虑。 中央反射呈白色条带,通常位于动脉(上分支血管)的显著位置,可能会导致错误的分割过程。 3 分割方法 3.1 基于像素处理的分割方法 利用图像中像素的特征来进行分割是比较常用的方法,采用的方法包括选取灰度级、利用彩色、多谱灰度直方图等。在医学影像中,它的生物学依据是“同一种人体组织具有相同或相似的灰度或色彩的概率最大”。因此图像中的各个部分的图像可以用灰度级的差别来划分。 直方图阈值分割:如果图像中有两种灰度,一个代表物体, 另一个代表背景,物体和背景的灰度级有明显的差别,那么在直方图上将呈现双峰形态。最直接简单的办法就是把直方图上两个峰之间的谷底作为灰度值分割的阈值

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

守給你的承諾、 提交于 2019-12-17 23:34:18
1068 万绿丛中一点红 (20分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值。现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充分大。 输入格式: 输入第一行给出三个正整数,分别是 M 和 N(≤ 1000),即图像的分辨率;以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑。随后 N 行,每行给出 M 个像素的颜色值,范围在 [0,2^​24​​ ) 内。所有同行数字间用空格或 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