96SEO 2026-02-20 04:39 17
。

图像的点运算就是预处理过程中的重要一步#xff0c;点运算是对图像的灰度级进行变换。
点运算是指对图像的每个像素依次进行相同的灰度变…对一个数字图像处理系统来说一般的处理过程为三个步骤图像预处理、特征抽取、图像识别和分析。
图像的点运算就是预处理过程中的重要一步点运算是对图像的灰度级进行变换。
点运算是指对图像的每个像素依次进行相同的灰度变换然后得出的图像就是输出图像。
那么对于RGB彩色图像的点运算是怎么处理的呢是有多种的处理方案的有简单对R、G、B分别操作的也有转换为灰度操作再还原为彩色的读者可以自行查阅资料。
拓展灰度分布范围突出细节差异例如医学影像中通过增大斜率是的病灶边缘更清晰亮度调节k1
整体平移灰度值用于低曝光图像全局提亮灰度反转k−1,d255用于突出暗区细节如X光片中的骨骼结构显示。
对特定灰度区间进行选择性拉伸例如增强中间灰度区域的对比度保留极亮/极暗区域的信息
对数变换压缩高灰度区域扩展低灰度细节适用于傅里叶频谱图等动态范围过宽的图像。
伽马变换幂次变换
γ1扩展暗部细节适用于背光场景的修复。
γ1增强亮部层次如卫星云图中云层纹理的区分
像素点是最小的图像单元一张图片由很多的像素点组成。
比如之后我们用到的Kun图片就是939*554像素的。
灰度是表明图像明暗的数值即黑白图像中点的颜色深度范围一般从0到255白色为255
黑色为0故黑白图片也称灰度图像。
灰度值指的是单个像素点的亮度。
灰度值越大表示越亮。
灰度就是没有色彩RGB色彩分量全部相等。
图像的灰度化就是让像素点矩阵中的每一个像素点都满足关系RGB此时的这个值叫做灰度值。
如RGB(100,100,100)就代表灰度值为100,RGB(50,50,50)代表灰度值为50
灰度值与像素值的关系:黑白图像的灰度值就是像素值彩色图像则需要进行一定的映射才可以得到灰度
先上网找一张我家哥哥的图片初始化一下Java项目然后就可以准备开始了。
利用JavaSwing进行图形化显示注意代码里边标注的他的图片读取默认
JFrame(图片展示);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800,
FileInputStream(./asset/caixukun.png));Image
ImageIO.read(is);imageoriginImage;//imageoriginImage.getScaledInstance(400,300,Image.SCALE_SMOOTH);//
bimageutils.toBufferedImage(image);
colorModelbimage.getColorModel();//imageoriginImage;//
ImageIcon(image));frame.add(new
JScrollPane(label));frame.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);}
增强错误处理JOptionPane.showMessageDialog(frame,图片加载失败:
e.getMessage(),错误,JOptionPane.ERROR_MESSAGE);System.exit(1);}});}
观察图片效果良好这里读者可能会想把图像规范到一个固定的长宽比如400*300作者在这里尝试调用了Image的scale库最后的结果是bug预警后续调试观察RGB图像矩阵的时候像素值发生巨变通道数也变成了4总而言之就是不太看的明白的故障最终取消选择手工裁剪图片尺寸。
在raster(栅格)属性下的data栏目发现里边包括了RGB三个通道的所有点。
加权平均法由于人眼对不同颜色的敏感度不同对绿色的最高红色次之对蓝色最低所以通常的权重设置是R0.299,
grayLevel);bufferedImage.setRGB(x,
这里返回的bufferImage是image的子类可以在main函数里直接赋值给image看看转换之后的效果
drawGrayscaleHistogram(BufferedImage
color.getRed();histogram[grayLevel];}}//
BufferedImage.TYPE_INT_RGB);Graphics2D
histogramImage.createGraphics();g2d.setColor(Color.WHITE);g2d.fillRect(0,
histogramHeight);g2d.setColor(Color.BLACK);for
histogramHeight);g2d.drawLine(i,
barHeight);}g2d.dispose();return
其实这个图画的不是很好看点开数值看一下分布各个地方都有应该是纵轴尺度太大了。
drawGrayscaleHistogram(BufferedImage
color.getRed();histogram[grayLevel];}}//
BufferedImage.TYPE_INT_RGB);Graphics2D
histogramImage.createGraphics();g2d.setColor(Color.WHITE);g2d.fillRect(0,
histogramHeight);g2d.setColor(Color.BLACK);double
histogramHeight);g2d.drawLine(i
barHeight);}g2d.dispose();return
注最后发现这么稀疏的原因是因为int除法向下取整全是0修改utils里边的这一小部分
histogramHeight));g2d.drawLine(i
经过调试还是因为这张图本身不是太好确实太集中了没能画出好图读者感兴趣可以换张图代码全都相同下边贴一张作者换图之后的直方图
观察灰度直方图是为了对其进行操作在文章开始就有提到图像点运算是为了去做数据增强。
整体灰度都偏向于一个区域的话大多数时候不是有利的会让画面看起来灰蒙蒙
并非灰度很高的图片或者灰度很低的图片看起来就会很清晰而是对比度高的图片看起来才会清晰特征分明这也就方便了各种识别任务。
直方图均衡化是一种简单有效的图像增强技术通过改变图像的直方图来改变图像中各像素的灰度主要用于增强动态范围偏小的图像的对比度。
原始图像由于其灰度分布可能集中在较窄的区间造成图像不够清晰。
例如过曝光图像的灰度级集中在高亮度范围内而曝光不足将使图像灰度级集中在低亮度范围内。
采用直方图均衡化可以把原始图像的直方图变换为均匀分布均衡的形式这样就增加了像素之间灰度值差别的动态范围从而达到增强图像整体对比度的效果。
换言之直方图均衡化的基本原理是对在图像中像素个数多的灰度值即对画面起主要作用的灰度值进行展宽而对像素个数少的灰度值即对画面不起主要作用的灰度值进行归并从而增大对比度使图像清晰达到增强的目的如下图所示。
如果一幅图像整体偏暗或者偏亮那么直方图均衡化的方法很适用。
但直方图均衡化是一种全局处理方式它对处理的数据不加选择可能会增加背景干扰信息的对比度并且降低有用信号的对比度如果图像某些区域对比度很好而另一些区域对比度不好那采用直方图均衡化就不一定适用。
此外均衡化后图像的灰度级减少某些细节将会消失某些图像如直方图有高峰经过均衡化后对比度不自然的过分增强。
针对直方图均衡化的缺点已经有局部的直方图均衡化方法出现。
直方图均衡化在需要增强局部细节的任务中表现优异比如识别任务但其对全局亮度分布的破坏性处理可能影响依赖整体光照语义的应用如图生文
上边的一系列例子里我们发现最后一张黑猫图片是个例外试图发现共性找出第二张可能有这种情况的例子这样的情况是由于黑白图片吗,是由于过暗的地方有光影吗现在是什么情况呢可能原图的色调太单一就那么几个所以均衡化之后
灰度直方图呈现的是一种图像整体的状态因为灰度级统计的是全部的图片所以造成上述结果的应该是一种“局部的特征”。
我要不要找一找他的灰度分布情况呢
回答实时证明均衡化对于噪声的鲁棒性很差有噪声的时候就会导致颗粒感很足出来的画面会很奇怪。
可以检测一下图片里的噪声
不难看出不是所有的灰度图像经过均衡化都会变得更加清晰的那么灰度直方图均衡化到底在哪些图上可能效果比较好呢我们看看他的操作方案
如果把映射的分子分母上的-cdfMin去掉那是不是立马就能看懂了就是一个拉伸一个简单的解释是为了让映射范围有0所以这个公式的映射范围就变成了0~255之间。
javax.swing.filechooser.FileNameExtensionFilter;
{super(图像处理器);initializeUI();loadDefaultImage();}private
{setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(1000,
JButton(选择图片);operationComboBox
JButton(重置);controlPanel.add(fileSelectButton);controlPanel.add(new
JLabel(选择操作:));controlPanel.add(operationComboBox);controlPanel.add(processButton);controlPanel.add(refreshButton);//
super.getPreferredSize();}};imageLabel.setHorizontalAlignment(SwingConstants.CENTER);imageLabel.setVerticalAlignment(SwingConstants.CENTER);JScrollPane
JScrollPane(imageLabel);add(controlPanel,
BorderLayout.NORTH);add(scrollPane,
事件监听fileSelectButton.addActionListener(e
selectImageFile());processButton.addActionListener(e
processImage());refreshButton.addActionListener(e
{loadImage(./asset/tanzhilang.png);}private
JFileChooser();fileChooser.setCurrentDirectory(new
File(./asset));fileChooser.setFileFilter(new
(fileChooser.showOpenDialog(this)
{loadImage(fileChooser.getSelectedFile().getAbsolutePath());}}private
ImageIO.read(is);showOriginalImage();}
{JOptionPane.showMessageDialog(this,
JOptionPane.ERROR_MESSAGE);}}private
originalImage;updateImageDisplay();}private
operationComboBox.getSelectedIndex();try
ImageUtils.toGrayscale(originalImage);break;case
2:processedImageutils.drawGrayscaleHistogram(ImageUtils.toGrayscale(originalImage));break;case
utils.histogramEqualization(ImageUtils.toGrayscale(originalImage));break;case
utils.histogramEqualization(ImageUtils.toGrayscale(originalImage));processedImageutils.drawGrayscaleHistogram(processedImage);break;case
utils.countNoisePoints(ImageUtils.toGrayscale(originalImage),
30);JOptionPane.showMessageDialog(this,
noisePoints);return;default:processedImage
originalImage;}updateImageDisplay();}
{JOptionPane.showMessageDialog(this,
JOptionPane.ERROR_MESSAGE);}}private
getContentPane().getComponent(1)).getViewport().getExtentSize();int
processedImage.getScaledInstance(Math.min(processedImage.getWidth(),
maxWidth),Math.min(processedImage.getHeight(),
maxHeight),Image.SCALE_SMOOTH);imageLabel.setIcon(new
ImageIcon(scaledImage));imageLabel.revalidate();imageLabel.repaint();}public
ImageProcessorGUI();app.setLocationRelativeTo(null);app.setVisible(true);});}
BufferedImage(image.getWidth(),
BufferedImage.TYPE_INT_RGB);for
代码链接Keith1276/Gray-level-Histogram-Equalization-and-Linear-Transformation--in-Image-Processing-https://github.com/Keith1276/Gray-level-Histogram-Equalization-and-Linear-Transformation--in-Image-Processing-
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback