如何显示一副超大图像
1:做过图像显示的都知道,我们的图片大部分都是压缩过的,大部分为JPEG PNG BMP其中BMP格式是点阵形式,当图片翻译到内存之后无论压没压缩过都会变成BMP格式放进内存,在这个过程中,图片数据会几倍的增大,就比如JPEG,一张1M大小的JPEG格式的图片,翻译到内存可能就会变成7倍左右,也就是7M会放在电脑内存里面,如果显示一张100M的JPEG图片,放进内存的话可能就会成为1G,好了如果是1G的图片呢,你的电脑内存还够用吗,可以,兄弟你可以说我电脑配置很高 达到16G内存条,,如果我要让你显示一张4G的图片呢,注意压缩过的,翻译到内存将近28G,你说我可以买一个28G的内存条,可以 ,兄弟你很有钱,哈哈哈,,如果你非要这样,这篇文章可以不用看了,跪拜土豪。那如果,我就想用一个2G的内存条显示这张压缩过还有4G的图片咋办,并且我还想生成这张图片呢,就比如说,我用显微镜拍一张切片,或则一个材料的纹理结构,那么虽然或许一个切片只有几个CM,但是显微镜人家分辨率高呀,看的细呀,用显微镜不就是想把图片放大个几千倍显示嘛,好了,问题来了,这样显微照相机可能要拍上千张图片,最后拼接成一张大图,然后放在电脑上显示,所有医生可以在电脑面前指指点点,是不是很方便,但是,同志,问题又来了,电脑内存不够,你也生成不了这么大的图片,生成的过程也是在电脑内存里面的, 好了,废话不多说了,看下面的演示吧。
1:准备一张54889x80315图片,当然不一定很多人会有这么大的图片,因为不知道这种技术的话,也没法生成这么大的图片。
如图:
这张图片大小是54889x80315 这数据量大概有多大呢,我算了一下,大概是4.2041G,细心的网友可能会注意到,为什么显示的大小只有399M 呢,,哈哈哈,,这就是另一个技术了,想听的朋友们,会在后续的文章中,解密。
2:现在假设我们大家都有了这张图片了,下面我们想显示这张图片:首先,都会想到的,我用常规的浏览器试一下呗,我们就先用微软自带的图片浏览器,不要小瞧了这个windows图片查看器,亲测,他很智能,也很高效,千万不要以为他是个小程序,有时候我确实可以打开我的图片,即使我的图片有着我设计的特殊的数据结构和压缩形式,PS都不能打开我的图片,这家伙可以打开,所以在这里我还是很佩服这个图片浏览器。
怎么样,哈哈哈,电脑内存不够吧,当然这个浏览器再吊,也只是傻大粗的野蛮式显示这张图片,当然内存不够用了。我在我朋友8G内存的电脑上也试了,一样死机!!!显示都显示不了了,还谈什么产生这张图片。
3:但是呢,我用自己写的软件,就可以打开这张图片,当然之前我也知道怎么产生这张图片,这是一个完整的流程;我的软件打开的效果是:
来一张全局的图像效果:如下:
其实把图片使劲缩小显示,图片的全局效果就长成这样。其实效果和你显示一张小图片没什么区别,流畅度,还有你可以做标记,什么的,,,,这些都是很多别的浏览器都具备的附加功能,但是当这些附加功能实现过程也是很痛苦的,为什么呢,就是因为这是一张超大图片,太大了,显示机制不一样,所以一切传统方法都得颠覆一下。
写的好累,这个项目,做了两年,就是为了完成这个软件,整个过程也比较痛苦,因为我是机械出身,现在还在学校读研究生,写代码的水平赶不上科班出身,这项技术整个完整流程,我打算慢慢写下来,从你如何产生一张目前为止最大的图片,让你图像拼接突破计算机限制,让你如何显示出来,如何平移,如何缩放,如何做标记等等,,太多了内容,,完整工程文件,包括编译好的库文件,我都有,压缩包解压就可以直接用,我用WPF编写的,其实WPF就和C#差不多,其实他两是兄弟。代码数量超过好几万。可是花费了我好大的心血。有兴趣的朋友可以百度一下Aperio,MOTIC这些企业,Aperio这个软件是和他的仪器配套出售的,据说一台仪器好几百万,功能就是显微镜扫描一个切片,然后打开浏览切片,主要是方便医生进行切片检查,同时减轻医生的工作量,要知道,没有这个仪器的话,医生可要用眼睛一个个看切片,成千上万的切片这是要累死医生呀!!!眼睛瞅瞎!!!Aperio他们做的扫描一张切片就几秒,然后就输入到电脑,用软件显示出来,这个软件核心功能,也就是我这个软件的功能。。。。。。。
整个软件涉及到的技术有,TIFF图像技术,四叉树,虚拟显示技术,虚拟容器技术,内存映射文件技术,图像金字塔技术等等剩下的就是什么,做标记,XML文档管理,缩略图显示,UI布局等等 真的很多。
有兴趣的朋友可以关注后续的文章,有需要这个软件的可以联系我,我的邮箱nanshanyi@sjtu.edu.cn,可以商量。今天就写到这。。。。。。
如何显示一副超大图像相关推荐
- pythpn实现bgr颜色通道分离,并分别显示一副彩色图片的BGR通道图片
分别显示一副彩色图片的B,G,R通道图片 要实现这个功能,原理很简单. 一张彩图有三个颜色通道,显示哪个就将另外两个通道置0 代码 import cv2 as cv img = cv.imread(' ...
- matlab同窗口显示图片,[求助]关于GUI的问题,如何在同一窗口里显示四副图片...........
[求助]关于GUI的问题,如何在同一窗口里显示四副图片........ 我接到老师给的一个课题,现在遇到了困难.来向大家求助!希望大家能帮小弟一个忙,小弟感激不尽!我以前没接触过MATLAB,可以说是 ...
- opencv进阶学习9:图像阈值大全,图像二值化,超大图像二值化
基础版笔记链接: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版二值化讲解 opencv ...
- iPad上浏览超大图像,kakadu和Jpeg2000在iOS上的例程
如何能在iphone / iPad上高效地看超大图像(如地理.医学类图像), Jpeg2000和kakadu能很好的实现这一功能,下图基本实现了窗宽窗位.缩放.平移. 渲染采用OpenGL ES. 值 ...
- python下:用 matplotlib.pyplot 显示 Opencv 读取的图像
在涉及图像处理时,我们通常用opencv去读取并处理图像,而用matplotlib去显示图像,因为opencv有很强的图像处理能力,而matplotlib有很强的可视化能力,可以方便的可视化分析实验的 ...
- [Powerpoint]幻灯片放映显示在副显示屏
[Powerpoint]幻灯片放映显示在副显示屏 当我们使用了第二显示屏的时候,有时候会出现,幻灯片放映自动显示在我们的第二显示屏上.此时,为了调整它,我们可以在PPT的菜单栏中"幻灯片放映 ...
- 基于mschart控件,绘制工控采集类曲线,可对图像进行缩放,拖动滚动条显示放大后的图像
基于mschart控件,绘制工控采集类曲线,可对图像进行缩放,拖动滚动条显示放大后的图像,并动态显示曲线上的数值点 在工控.采集.测试类项目中经常需要对采集接收回来的数据进行图像.曲线显示,本人在项目 ...
- ROS中使用乐视 奥比中光(Astra Pro)深度相机显示彩色和深度图像
环境 Ubuntu ROS Kinect or Melodic 奥比中光ROS驱动包安装地址:https://github.com/orbbec/ros_astra_camera 1.安装ROS 2. ...
- 解决电脑扩展屏后图标老是显示在副屏问题
现象:解决电脑扩展屏后图标老是显示在副屏问题 思路:网上找了一些,花了2小时,分析各种原因.总结如下 这个是罪魁祸首,这个是左面图标强制恢复软件 如果你在扩展屏幕期间恢复的话,恢复在副屏后,就会一直显 ...
最新文章
- 解决oninput在输入中文时,会获取拼音的问题
- 关于通过dll导出类模板和函数模板
- springboot netty给特定客户端推送_Spring Boot 又升级了?2.0 你搞懂了吗?!
- 关于cacti图形显示不正常的解决办法
- Intel 旗下 Habana Labs 遭勒索软件 Pay2Key 攻击,数据被盗
- SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)
- ie以及ie内核浏览器连不上网,其他浏览器可以,部分软件连不上网的解决办法
- linux计划任务踩坑
- Java常用关键字查询
- 项目-1.CROSSFORMER论文与代码解析(CrossFormer: A Versatile Vision Transformer Based on Cross-scale Attention)
- 林轩田机器学习基石5笔记:训练和测试的不同
- 冯雪 手术机器人的应用_外科手术机器人发展及其应用
- 喜报|Authing 入选 CNCF Landscape 云原生技术图谱
- 自媒体运营、平面设计封面如何搭配?3大色彩搭配网站推荐
- win7为什么打开桌面上的计算机很卡很慢,Win7电脑开机速度慢解决方法
- yox.js 的使用
- 东北大学acm暑期夏令营第七天
- jmockit抛NullPointer异常,initialize failed异常
- 如何查找app启动页面
- HTMLday2旅途