前几周做了一个医疗展示CT图的项目,需要对DICOM文件进行解析展示并且在页面中对图像进行明暗和对比度的调节功能。费了许多精力将此功能做了出来(虽然使用的并不是DICOM文件中的窗宽/窗位,但也算是一种知识的学习),所以在此记录加深记忆及方便以后查阅。

canvas API及教程

由于要对图片进行操作(明暗及对比度的调节、反色)所以页面中使用img元素是不合适的,而HTML5中提供的canvas元素可以指定一块画布并在此之上进行绘图及处理,所以展示图片时使用canvas。canvas的使用教程在MDN中介绍的非常详细在此附上连接 Canvas API

图片明暗及对比度的调节

通过此教程了除了了解到canvas中如何画图及如何使用图片外了解的另外的知识就是,对图片明暗度的调节就是对像素颜色值的增减,255-当前像素的颜色值就能得到反色。但问中并没有对对比度调节的例子。所以将网上搜所到对比度调节的算法记录在此。

网上最常用的调整对比度的算法是根据图像的灰度进行调整

下面是算法:

1、计算平均亮度

2、每点与平均亮度比较,得到差值。

3、新的亮度 = 平均亮度 + 系数 * 差值

4、根据新的亮度,计算出新的rgb(保持色调不变)

原文地址:数字图像处理 调整对比度的几种方法

通过鼠标滑动触发事件

在很多DICOM解析工具中,都会提供按住鼠标左右或上下滑动来调节图片明暗及对比度(即窗宽及窗位)的操作。所以在此我们也需要在用户操作时增加上此功能。这个问题相对好解决,只要在canvas元素中触发鼠标移动事件时判断鼠标是点击状态,再根据鼠标的横坐标及纵坐标的位移对像素进行对应操作即可,调节的时候可以适当缩小以下位移与像素值的调节,以防止移动鼠标的时候图片变化过大

canvas的初始大小

canvas 标签只有两个属性—— width和height。这些都是可选的,并且同样利用 DOM properties 来设置。当没有设置宽度和高度的时候,canvas会初始化宽度为300像素和高度为150像素。而在用canvas加载图片时,知识在当前画布的内部绘制图片,所以canvas在定义之后不会自动的根据图片的大小来改变自身的宽高。所以如果想让canvas的宽高与图片相同,需要先知道图片的宽高,对应设置好canvas的宽高之后在进行图片的绘制。

总结

在此过程中,虽然花费了不少的时间与经历,但大部分都是用在了canvas的学习及鼠标事件的处理上,熟悉了这写大家基本就能很轻松的写出这个东西。而编写的过程中也遇到了一些思考不周导致的问题,像反色后在进行调节又回到了反色前的状态;鼠标按住划出canvas范围后按住不放在滑回会对图片的调节造成影响及最初时未保存基础的图像数据,导致在图像调节后无法恢复原来图像等等问题,相信在经过思考之后都能搞得定。
在此附上我demo的连接图像明暗及对比度调节DEMO

Canvas像素调节—调节图片的明暗与对比度相关推荐

  1. canvas 像素操作(图片像素操作)

    canvas 图片像素/像素操作 在 canvas 中的 drawImage() 方法允许在 canvas 中插入其他图像( img 和 canvas 元素都可以) .图片绘制上去后,我们可以通过 g ...

  2. jquery 怎么调节图片亮度_照片明暗反差过大?教你3种办法解决!

    照片明暗反差太大怎么办? 当我们拍出的照片明暗反差过高时,可以通过后期调整,使其变得影调层次丰富和平滑起来,并让高光.中间调和暗部均显示出更多的细节. 怎样处理明暗反差过大的照片 如果照片偏暗.偏亮或 ...

  3. jpg格式图片分辨率怎样修改?怎么调节jpg图片的分辨率?

    jpg格式图片分辨率怎样修改?最近收到很多小伙伴的私信问图图怎么调节jpg图片的分辨率,因为最近有很多小伙伴需要上传照片,照片的尺寸.大小都符合要求了但是还是一直无法上传成功,最后才知道是图片分辨率不 ...

  4. labelimg如何调整框的颜色_PS学习之旅:如何更好调整画面明暗?明度、色阶详细介绍,收藏...

    ps中调色工作其实就是调整人对三要素的感受,调色是一门比较大的学问,那么调整好明暗程度对作品来说是相关重要的,本文详细介绍如何控制画面的明暗. 1工具/原料 Adobe Photoshop CS6软件 ...

  5. 15.真实感图形——光照与明暗+光线跟踪+纹理映射+辐射度方法+阴影

    ♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥ ...

  6. 1w字详解从破解某定设计网站谈前端明暗水印(推荐收藏)

    前言 最近在写公众号的时候,常常会自己做首图,并且慢慢地发现沉迷于制作首图,感觉扁平化的设计的真好好看.慢慢地萌生了一个做一个属于自己的首图生成器的想法. 制作呢,当然也不是拍拍脑袋就开始,在开始之前 ...

  7. 【OpenCV应用】python处理行李图像匹配项目——图像直方图应用与明暗变换

    OpenCV--图像直方图与明暗变换应用记录 图像直方图应用与明暗变换 简单伽马变换与直方图显示 MASK特定区域直方图显示 OPENCV: 直方图均衡化 有限对比度自适应直方图均衡 二维直方图 直方 ...

  8. 何恺明暗通道去雾(阅读笔记)

    何恺明暗通道去雾文章阅读 刘海山,2021年6月24日 文献引文信息: He, K. M., Sun, J. & Tang, X. O. Single Image Haze Removal U ...

  9. Baumer工业相机堡盟相机VLXT-90M.I如何做平场校正阴影校正:消除图像明暗不均匀现象

    项目场景: 特殊环境类项目,使用高速高稳定并自带高防护的VLXT.90M.IBaumer相机作为相机主体,它属于万兆网系列中的一种,使用该相机可以保证图像质量的前提下提高图像传输速度. 相机型号:VL ...

最新文章

  1. 在Python3.4中实现opencv3.1.0的安装配置
  2. css不换行属性_CSS强制不换行的whitespace:nowrap的坑,你会填么?
  3. 安卓makefile与linux,分析linux make命令与Makefile的区别
  4. 脚印:关于错误编码的管理的一些思考
  5. android actviity模糊,Framework启动过程浅析
  6. java实现ldap服务器_Java到LDAP教程(包括如何安装LDAP服务器/客户端)
  7. 架构设计 | 分布式业务系统中,全局ID生成策略
  8. 生活中的数学(为生活建模)(三)—— 代数
  9. java 删除文件夹和文件_如何创建无法删除的文件夹?
  10. Linux挂载windos共享提示error
  11. Vue:vue过滤器的使用、借助第三方库moment.js实现时间过滤器
  12. alter在mysql_MySQL的alter的使用
  13. JavaWeb在线商城系统(java+jsp+servlet+MySQL+jdbc+css+js+jQuery)
  14. 计算机开机后无法正常显示桌面图标,电脑开机后不显示桌面图标怎么办
  15. 超大水箱持久水润,让这个冬天不干燥,摩飞有雾加湿器体验
  16. 1.1哈恩巴纳赫定理
  17. c语言编程设计实验课件,c语言程序设计实验课件.ppt
  18. 数据库的基本操作习题
  19. CSDN页面打印不正常的解决方法
  20. cshop是什么开发语言_Fecshop 多语言

热门文章

  1. MKS SERVO42C 闭环步进电机 使用说明(一)安装闭环PCBA
  2. 【P4149 [IOI2011]Race】点分治
  3. 实训记录3——构建以太网交换网络(VLAN、生成树)
  4. tableau复合图形示例:三张图形描述一张成绩单
  5. 树莓派+花生壳+移动硬盘搭建下载机
  6. 从《西部世界》看你的数据价值
  7. SDNUOJ 1629.B. 77777
  8. 计算矩形面积的程序python_python实现用类读取文件数据并计算矩形面积
  9. 解决懒惰、拖延的方法
  10. 教育最大的失败,是普通家庭富养孩子