Tag: 图像处理

如何使用Floyd-Steinberg抖动将24位PNG转换为3位PNG?

如何使用Floyd-Steinberg抖动将24位PNG转换为3位PNG? 应该使用java.awt.image.BufferedImage来获取和设置RGB值。 在维基百科上,给出了一个如何将16位转换为8位图像的示例: find_closest_palette_color(oldpixel) = (oldpixel + 128) / 256 基于此,是否有任何关于如何适应上述示例以实现目标的想法?

如何使用坐标捕获android中的图像

我是Android新手,我想把问题摆在你面前, 我想在四个坐标之间捕获图像,如下所示。 首先,我将图像转换为位图,然后将其设置为相对布局的背景。 我知道这四个坐标。 那我怎么能得到框内的图像并将其设置为另一个布局作为背景。 伙计们,请让我从这个逻辑中解脱出来……

为Julia集生成自定义调色板

我需要一种算法或方法来生成调色板以着色朱莉娅设置图像。 当使用转义时间算法生成图像时,我举例说明如下图: 但是我需要一些方法来生成类似维基百科页面上的自定义调色板: 如何获得与此类似的图像? 另外,Julia集应该使用什么颜色的平滑算法? 以下是澄清的代码段: int max_iter = 256; ComplexNumber constant = new ComplexNumber(cReal,cImag); float Saturation = 1f; for(int X=0; X<WIDTH; X++) { for(int Y=0; Y<HEIGHT; Y++) { ComplexNumber oldz = new ComplexNumber(); ComplexNumber newz = new ComplexNumber(2.0*(X-WIDTH/2)/(WIDTH/2), 1.33*(Y-HEIGHT/2)/(HEIGHT/2) ); int i; for(i=0;i 2) break; } float Brightness = i < max_iter ? 1f […]

从Java读取RAW图像

佳能/尼康/其他相机以其一些专有格式(.CR2,无论如何)保存传感器的原始输出。 是否有任何Java库旨在读取它们并转换为可管理的BufferedImages? 我在这里并不关心完全可自定义的转换,类似于ufraw或imagemagick,而是简单的“仅适用于”渲染此类图像的简单预览。

了解BufferedImage.getRGB输出值

我使用此方法获取图像中像素的整数值: int colour = img.getRGB(x, y); 然后我打印出值,我看到黑色像素对应一个像“-16777216”这样的值,一种像“-16755216”之类的东西等等。有人可以解释一下这个值背后的逻辑吗?

Java – 我需要一个非常快速的图像缩放算法

我正在研究Midlet应用程序。 我发现自己需要经常缩放图像。 这已经成为一个问题,因为有些手机很慢,缩放时间太长。 目前我正在使用Image.createRGBImage(int,int,int,boolean)来缩放图像。 我想知道你们中是否有人知道一种非常有效和快速的图像缩放方式。 注意:这是一个Midlet应用程序,因此只有JavaME可用,这意味着我无法访问完整Java版本中可用的其他库。 注意2:我的大部分缩放都是从小图像到大图像完成的,尽管我也缩小了图像。

Java的图像比较技术

我正在寻找几种方法来比较两个图像,看看它们有多相似。 目前我计划将百分比作为“相似性指数”的最终结果。 我的计划大纲是这样的: 用户选择2个图像进行比较。 使用按钮,可以使用多种不同的方法比较图像。 最后,每个方法旁边都有一个百分比,表示图像基于该方法的相似程度。 我最近做了很多阅读,我读过的一些东西似乎非常复杂和先进,而不是像我这样只有大约一年的Java经验的人。 到目前为止,我读过: 傅立叶变换 – 我发现这在Java中实现相当混乱,但显然Java Advanced Imaging API有一个类。 虽然我不确定如何将输出转换为实际结果 SIFT算法 – 看起来非常复杂 直方图 – 可能是迄今为止最简单的直方图 像素抓取 – 似乎可行,但如果两个图像之间有相当大的变化,它看起来不会产生任何类型的准确结果。 我可能错了? 我还想先使用Sobel滤波器预处理图像,然后进行比较。 问题是实际的比较部分。 所以,是的,我想看看是否有人有想法比较Java中的图像。 希望以前有人在这里做过类似的项目。 我只想获得一些关于可行的比较技术的输入,这些技术在Java中难以实现。 提前致谢

用Java显示图像

我想显示图像,但不知道该怎么做。 我是否必须安装一些库文件或者只是它可以完成我不知道。 实际上我想做图像处理,但首先我必须输入图像并显示图像,然后我可以将图像处理的效果作为输出,并决定它(算法)是否正确。 我只安装了日食。 我也在谷歌搜索过,但无论他们建议什么都运作不好。 要么我必须安装或不安装。 我试过以下代码: import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JComponent; import javax.swing.JFrame; public class ImageTest { public static void main(String[] args){ EventQueue.invokeLater(new Runnable() { public void run(){ ImageFrame frame = new ImageFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } ); } } class ImageFrame extends JFrame{ public […]

在较大的图像中查找已知的子图像

有没有人知道在更大的图像中定位已知图像的算法(或搜索术语/描述)? 例如 我有一个包含各种按钮和区域(目标)的单个桌面窗口的图像。 我还有代码捕获当前桌面的屏幕截图。 我想要一个算法,它可以帮助我在更大的桌面图像中找到目标图像(窗口所在的x和y坐标是什么)。 目标图像可能位于较大图像中的任何位置,并且可能不是100%完全相同(非常相似但不完全可能是OS显示差异的b / c) 有谁知道这样的算法或算法类? 我发现了各种图像分割和计算机视觉算法,但它们似乎适用于区域的“模糊”分类,而不是将特定图像定位在另一个区域内。 ** 我的目标是创建一个框架,给定一些种子目标图像,可以在桌面上找到“外观”,找到目标区域并“观察”它的变化。 **

如何使用javacv识别长度和宽度可变的方形或矩形?

我正在使用java开发项目来识别使用opencv包的组件,但我是javacv的新手,我只是想知道如何识别特定源图像中的矩形,请一些经验人员给出一些基本的指导来存档这个任务。 我尝试在这里使用模板匹配,但它只能识别确切大小的矩形。 但在我的情况下,我需要识别变长矩形? import java.util.Arrays; import static com.googlecode.javacv.cpp.opencv_core.*; import static com.googlecode.javacv.cpp.opencv_imgproc.*; import static com.googlecode.javacv.cpp.opencv_highgui.*; public class TestingTemplate { public static void main(String[] args) { //Original Image IplImage src = cvLoadImage(“src\\lena.jpg”,0); //Template Image IplImage tmp = cvLoadImage(“src\\those_eyes.jpg”,0); //The Correlation Image Result IplImage result = cvCreateImage(cvSize(src.width()-tmp.width()+1, src.height()-tmp.height()+1), IPL_DEPTH_32F, 1); //Init our new Image cvZero(result); cvMatchTemplate(src, tmp, result, […]