scale_image (Operator)

函数签名:

scale_image(Image : ImageScaled : Mult, Add : )

功能说明:

缩放图像的灰度值

详细描述:

本算子通过以下变换缩放输入图像:

g' := g * Mult + Add

如果发生数值溢出,则灰度值将被裁剪。注意这种情况在图像类型为cyclic(循环)和direction(方向)时不会发生。

例如,此运算符可用于将图像的灰度值,即区间[GMin,GMax],映射到最大范围[0:255]。

可以使用操作符min_max_gray确定GMin和GMax的值。

注意事项:

注意,由SIMD技术带来的加速在大的、紧凑的输入区域达到顶峰。在极少数情况下,使用SIMD技术的执行时间比不使用SIMD技术的执行时间明显要长,这取决于输入区域以及硬件的性能。在这种情况下,可以通过调用set_system(::'mmx_enable','false':)来避免使用SIMD技术。

并行化:

  • 支持OpenCL计算设备
  • 多线程类型:可重入(非独占并行运行算子)
  • 多线程作用域:全局(可以从任何线程调用)
  • 在tuple(元组)级别自动并行
  • 在channel(通道)级别自动并行
  • 在domain(域)级别自动并行

参数说明:

Image(输入对象)

数据描述(多通道)图像(数组)
数据类型对象(byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *等被计算设备支持的类型
意义需要缩放灰度值的图像
默认值
建议值
限制

ImageScaled(输出对象)

数据描述(多通道)图像(数组)
数据类型对象(byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *等被计算设备支持的类型
意义缩放后的结果图像
默认值
建议值
限制

Mult(输入控制参数)

数据描述数值
数据类型(real / integer)
意义灰度值拉伸因子
默认值0.01
建议值0.001, 0.003, 0.005, 0.008, 0.01, 0.02, 0.03, 0.05, 0.08, 0.1, 0.5, 1.0
限制
最小增量0.001
建议增量0.1

Add(输入控制参数)

数据描述数值
数据类型(real / integer)
意义灰度偏移
默认值0
建议值0, 10, 50, 100, 200, 500
限制
最小增量0.01
建议增量1.0

结果:

参数都正确的情况下本算子返回值为2(H_MSG_TRUE)。输入为空的情况下(无可获得的输入图像),该算子的行为通过算子set_system(::'no_object_result',<Result>:)来设置。如有必要,该算子会触发异常。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ImageComparerUI——基于Java语言实现的相似图像识别,基于直方图比较算法。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; public class ImageComparerUI extends JComponent implements ActionListener { /** * */ private static final long serialVersionUID = 1L; private JButton browseBtn; private JButton histogramBtn; private JButton compareBtn; private Dimension mySize; // image operator private MediaTracker tracker; private BufferedImage sourceImage; private BufferedImage candidateImage; private double simility; // command constants public final static String BROWSE_CMD = "Browse..."; public final static String HISTOGRAM_CMD = "Histogram Bins"; public final static String COMPARE_CMD = "Compare Result"; public ImageComparerUI() { JPanel btnPanel = new JPanel(); btnPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); browseBtn = new JButton("Browse..."); histogramBtn = new JButton("Histogram Bins"); compareBtn = new JButton("Compare Result"); // buttons btnPanel.add(browseBtn); btnPanel.add(histogramBtn); btnPanel.add(compareBtn); // setup listener... browseBtn.addActionListener(this); histogramBtn.addActionListener(this); compareBtn.addActionListener(this); mySize = new Dimension(620, 500); JFrame demoUI = new JFrame("Similiar Image Finder"); demoUI.getContentPane().setLayout(new BorderLayout()); demoUI.getContentPane().add(this, BorderLayout.CENTER); demoUI.getContentPane().add(btnPanel, BorderLayout.SOUTH); demoUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); demoUI.pack(); demoUI.setVisible(true); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; if(sourceImage != null) { Image scaledImage = sourceImage.getScaledInstance(300, 300, Image.SCALE_FAST); g2.drawImage(scaledImage, 0, 0, 300, 300, null); } if(candidateImage != null) { Image scaledImage = candidateImage.getScaledInstance(300, 330, Image.SCALE_FAST); g2.drawImage(scaledImage, 310, 0, 300, 300, null); } // display compare result info here Font myFont = new Font("Serif", Font.BOLD, 16); g2.setFont(myFont); g2.setPaint(Color.RED); g2.drawString("The degree of similarity : " + simility, 50, 350); } public void actionPerformed(ActionEvent e) { if(BROWSE_CMD.equals(e.getActionCommand())) { JFileChooser chooser = new JFileChooser(); chooser.showOpenDialog(null); File f = chooser.getSelectedFile(); BufferedImage bImage = null; if(f == null) return; try { bImage = ImageIO.read(f); } catch (IOException e1) { e1.printStackTrace(); } tracker = new MediaTracker(this); tracker.addImage(bImage, 1); // blocked 10 seconds to load the image data try { if (!tracker.waitForID(1, 10000)) { System.out.println("Load error."); System.exit(1); }// end if } catch (InterruptedException ine) { ine.printStackTrace(); System.exit(1); } // end catch if(sourceImage == null) { sourceImage = bImage; }else if(candidateImage == null) { candidateImage = bImage; } else { sourceImage = null; candidateImage = null; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值