我一直在做我的项目,关于遥感图像处理和图像序列循环。每个生成的图像( JPEG或PNG格式)大约有8000 * 4000像素。我们的用户通常希望根据感兴趣的区域一次循环一个图像序列(超过50个图像)。因此,我必须根据用户的可视化客户端大小从每个图像中提取所需的查看区域。例如,如果用户的当前客户机视图是640 * 480,我必须根据当前的x(列)和y(行)坐标从每个原始图像中找到640 * 480大小的数据块,然后重新映射到客户机视图。当用户通过鼠标拖动平移到另一个查看区域时,我们的程序必须相应地尽快从每个原始图像中重新加载区域数据。
我知道JPEG库和PNG库都没有内置一些读取数据块的例程,比如long ReadRectangle (long x0,long y0,long x1,long y1,char* RectData);long ReadInaRectangle (long x0,long y0,short width,short height,char* RectData);
内置的JPEG解压缩器缺少这种功能。我知道JPEG2000格式提供了解压图像的特定区域。我对JEPG不是完全确定。
有人建议我使用CreateFileMapping、MapViewOfFile和CreateDIBSection来提交映射到视图的文件映射的字节数。与简单的平面二进制图像格式(如*.raw、*.img和*.bmp )不同,JPEG不仅包含图像数据,还包含复杂的JPG头。因此,将一块数据视图映射到JPEG文件之外并不容易。
有人建议我使用图像平铺或图像金字塔技术生成子图像,就像流行的图像可视化(Google Earth等)和地理信息系统应用程序(WebGIS等)一样。做。
我该如何解决这个问题?
谢谢你的帮助。
金李
发布于 2011-01-30 22:35:44
如果你同意区域坐标是8的倍数,ijg的JPEG库也许能够帮助你加载部分JPEG图像。
你会想要:
链接几乎涵盖了前两个步骤。第四个是非常简单的(您可以使用IJG接口获得色度子采样的类型,缩放--本质上是上采样--很容易通过使用OpenCV或滚动您自己的代码来实现)。third one是我还没有尝试过的东西,但听起来它是可能的。
发布于 2011-01-30 22:24:06
使用gd library很容易。LibGD是一个开源代码库,用于由程序员动态创建图像。
https://stackoverflow.com/questions/4842854
复制相似问题