Tag: 图像

在C中实现2D卷积的快速方法

我正在尝试实现视觉算法,其中包括具有9×9拉普拉斯高斯滤波器的预滤波阶段。 您能指出一个简要解释快速filter实现的文档吗? 我想我应该利用FFT进行最有效的过滤。

SDL将图像嵌入程序可执行文件中

是否可以使用可在运行时使用的SDL在程序中嵌入图像。 例如,我有一个程序在启动时显示包含徽标和版权信息的启动画面。 而不是将此图像放在位图文件中,并使用SDL_LoadBMP将其加载到SDL_Surface。 我想将图像嵌入到程序二进制文件中,以阻止某人可能更改启动图像和版权名称。 有没有人对如何做到这一点有任何建议? 示例代码会很棒。

为什么在使用rand()时会得到这种特殊的颜色模式?

我试图创建一个图像文件,如下所示: uint8_t raw_r[pixel_width][pixel_height]; uint8_t raw_g[pixel_width][pixel_height]; uint8_t raw_b[pixel_width][pixel_height]; uint8_t blue(uint32_t x, uint32_t y) { return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (xy)%rand() : rand(); } uint8_t green(uint32_t x, uint32_t y) { return (rand()%2)? (xy)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } uint8_t red(uint32_t x, uint32_t y) { return (rand()%2)? (yx)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } […]

如何对图像进行高质量缩放?

我正在编写一些代码来缩放C / C ++中的32位RGBA图像。 我已经写了一些有些成功的尝试,但它们很慢,最重要的是尺寸图像的质量是不可接受的。 我比较了由OpenGL(即我的video卡)和我的例程缩放的相同图像,它的质量相差几英里。 我已经搜索了Google代码,搜索了我认为可以解决一些问题的源代码树(SDL,Allegro,wxWidgets,CxImage,GD,ImageMagick等),但通常他们的代码要么是错综复杂的,要么分散在各处或者是满满的汇编程序,很少或没有评论。 我还阅读了维基百科和其他地方的多篇文章,我只是没有找到我需要的明确解释。 我理解插值和采样的基本概念,但我很难让算法正确。 我不想依赖外部库来完成一个例程,并且必须转换为它们的图像格式并返回。 此外,无论如何,我想知道如何自己做。 🙂 我之前看过一个关于堆栈溢出问题的类似问题,但它并没有真正以这种方式回答,但我希望有人可以帮我推动我朝着正确的方向前进。 也许指点我一些文章或伪代码……任何可以帮助我学习和做的事情。 这是我正在寻找的: 没有汇编程序(我正在为多种处理器类型编写非常可移植的代码)。 对外部库没有依赖性。 我主要关注的是缩放DOWN,但是稍后还需要编写一个扩展例程。 结果的质量和算法的清晰度是最重要的(我可以在以后对其进行优化)。 我的例程基本上采用以下forms: DrawScaled(uint32 *src, uint32 *dst, src_x, src_y, src_w, src_h, dst_x, dst_y, dst_w, dst_h ); 谢谢! 更新:为了澄清,我需要一些比盒子重新采样更先进的东西,用于降尺度,这会使图像模糊不清。 我怀疑我想要的是某种双三次(或其他)滤波器,它与双三次升频算法有些相反(即每个目标像素都是从所有贡献源像素计算得出的,并结合了保持锐利的加权算法。 例 这是我从wxWidgets BoxResample算法得到的例子与我想要的256×256位图缩放到55×55的例子。 www.free_image_hosting.net/uploads/1a25434e0b.png 最后: www.free_image_hosting.net/uploads/eec3065e2f.png 原始的256×256图像

使用最近邻居扩展图像

我一直试图让我的程序扩大图像。 我在为缩放图像分配新空间时遇到了一些问题,但我认为它是固定的。 我遇到的问题是当我试图从我的临时内存持有者发回我的图像时程序崩溃。 加载的图像放在我的struct Image 。 像素以img->pixels放置,高度为img->height ,宽度为img->width 。 但我不知道为什么当我将像素从tmp2 struct转移到我的img struct时程序崩溃,而当我执行相反的操作时它不会崩溃。 这是代码: void makeBigger(Image *img, int scale) { Image *tmp2; tmp2 = (Image*)malloc(sizeof(Image)); tmp2->height = img->height*scale; tmp2->width = img->width*scale; tmp2->pixels = (Pixel**)malloc(sizeof(Pixel*)*tmp2->height); for (unsigned int i = 0; i height; i++) { tmp2->pixels[i] = (Pixel*)malloc(sizeof(Pixel)*tmp2->width); for (unsigned int j = 0; j width; j++) […]

默认情况下Gdk-Pixbuf(Gtk-Image?)支持哪些图像格式?

我知道Gdk-Pixbuf支持png和jpg,但我无法在互联网上的任何地方找到所有完全(或部分)支持的图像格式的确切列表 。 这是我当前项目所必需的,因为我需要检查目录中每个文件的扩展名,并确定gdk-pixbuf是否支持它。 有帮助吗?

在C中将RGB转换为RGBA

我需要将表示RGB字节顺序的图像的字节数组的内容复制到另一个RGBA(每像素4个字节)缓冲区。 alpha通道稍后会被填充。 实现这一目标的最快方法是什么?

使用OpenCV将图像文档转换为黑白图像

我是OpenCV和图像处理的新手,我不知道如何解决我的问题。 我有一张用iPhone制作的文档照片,我希望将该文档转换为黑白文档。 我试图使用阈值,但文字不太好(有点模糊和不可读)。 我想文字看起来和原始图像一样,只有黑色,而背景则是白色。 我能做什么? PS当我拍摄部分文档的照片时,文字很大,结果还可以。 我将不胜感激任何帮助。 以下是我使用的示例图像和结果:

重复的图像检测算法?

我正在考虑为图像创建一个数据库系统,用紧凑的签名存储这些图像,然后与“查询图像”进行匹配,“查询图像”可以是存储图像的resize,裁剪,增亮,旋转或翻转版本。 请注意,我不是在谈论图像相似度算法,而是严格来说是重复检测。 这会使事情变得简单得多。 系统不关心两个图像是否有大象,只检测这两个图像是否实际上是同一图像。 直方图比较根本不适用于裁剪的查询图像。 我看到唯一可行的方法是形状/边缘检测。 首先,图像将以某种方式离散化,例如,每个像素被转换为8级灰度。 离散化的图像将包含相同颜色的大区域,这有助于指示形状。 然后可以用系数描述这些形状,并且可以记住它们的相对位置。 紧凑的签名将由此产生。 当必须进行比较时,将对存储的每个图像以及每个查询图像执行该处理。 这听起来像一个有效和可实现的算法? 为了说明这个想法: 删除了死的ImageShack链接 我知道这是一个不成熟的研究领域,我已经阅读了关于这个主题的维基百科,我会请你提出你对这种算法的想法。

图像下采样算法

什么是我可以用来将图像分成原始大小的一半的最佳重采样算法。 速度是最重要的,但它不应该降低质量太差。 我基本上试图生成图像金字塔。 我本来打算跳过像素。 这是最好的方式吗? 从我所看到的,像素跳过产生的图像太尖锐了。 可能有人试过这个评论。 我的图片包含这样的地图数据。