`
dream_people
  • 浏览: 60127 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

图像降噪

 
阅读更多

// 图像二值化 
// Bmp: TBitmap;      // 输入图像 
// Gray: Integer    // 阀值 
Procedure TwoValue(Bmp: TBitmap; Gray: Integer); 
Var 
  P: PByteArray; 
  X, Y, Z: Integer; 
Begin 

  //设置为24位真彩色,这样一个象素点包含三个字节 
  Bmp.PixelFormat := pf24Bit; 
  For Y := 0 To Bmp.Height - 1 Do 
  Begin 
    P := Bmp.ScanLine[Y];    // 读取一行象素点 
    For X := 0 To Bmp.Width - 1 Do 
    Begin 
      Z := Round(P[X * 3 + 2] * 0.3 + P[x * 3 + 1] * 0.59 + P[x * 3] * 0.11);  // 计算象素点阀值 

      If Z > Gray Then // 象素点阀值 > 输入的阀值 
      Begin 
        // 把该象素点设置为白色 
        p[x * 3] := 255; 
        p[x * 3 + 1] := 255; 
        p[x * 3 + 2] := 255; 
      End 
      Else 
      Begin 
        // 把该象素点设置为黑色 
        p[x * 3] := 0; 
        p[x * 3 + 1] := 0; 
        p[x * 3 + 2] := 0; 
      End; 
    End; 
  End; 

End; 

// 降噪 
// 根据一个点A的RGB值,与周围的8个点的RBG值比较,设定一个值N(0 <N <8),当A的RGB值与周围8个点的RGB相等数小于N时,此点为噪点 
// InBmpFile: String 要进行降噪的Bmm文件名 
// OutBmpFile: String 降噪后Bmm文件保存的文件名 
// G: Integer 图像二值化阀值 
// N: Integer 降噪率 0 <N <8 
// Z: Integer 降噪次数 
// 输出 
//  0:降噪成功 
//  1:降噪失败 
Function ClearNoise(InBmpFile, OutBmpFile: String; G, N, Z: Integer): Integer; 
Var 
  Bmp: TBitmap ; 
  Piexl : tcolor; 
  NearDots, X, Y, i, RGBz : integer; 
begin 
  Result := 1 ; 
  If Not FileExists(InBmpFile) Then Exit ; // 如果输入文件名不存在,直接退出 

  Bmp := TBitmap.Create; 
  Try 
    Bmp.LoadFromFile(InBmpFile) ;    // 载入图像 

    TwoValue(Bmp, G);  // 二值化 

    For i := 1 To Z Do  // 循环降噪 
    Begin 
      // 先将图片左上和右下角的点设置为白色 
      Bmp.Canvas.Pixels[0,0] := clWhite; 
      Bmp.Canvas.Pixels[Bmp.Width - 1, Bmp.Height - 1] := clWhite; 
      For X := 0 To Bmp.Width - 1 Do 
      Begin 
        For Y := 0 To Bmp.Height - 1 Do 
        Begin 
          Piexl := Bmp.Canvas.Pixels[X, Y];  // 读取象素点颜色 
          RGBz := GetRValue(Piexl);          // 读取象素点RGB值中的R值 

          // 因为图像已经二值化,如果R值=0,此象素点为黑色,如果R值 <>0,此象素点为白色, 
          If (RGBz = 0) Then // 处理黑点 
          Begin 
            NearDots := 0;  // 与周围8个点RGB相等的点数 
            If (GetRValue(Bmp.Canvas.Pixels[X - 1, Y - 1]) = RGBz) Then Inc(NearDots) ;    // 左上 
            If (GetRValue(Bmp.Canvas.Pixels[X,    Y - 1]) = RGBz) Then Inc(NearDots) ;    // 上 
            If (GetRValue(Bmp.Canvas.Pixels[X + 1, Y - 1]) = RGBz) Then Inc(NearDots) ;    // 右上 
            If (GetRValue(Bmp.Canvas.Pixels[X - 1, Y])    = RGBz) Then Inc(NearDots) ;    // 左 
            If (GetRValue(Bmp.Canvas.Pixels[X + 1, Y])    = RGBz) Then Inc(NearDots) ;    // 右 
            If (GetRValue(Bmp.Canvas.Pixels[X - 1, Y + 1]) = RGBz) Then Inc(NearDots) ;    // 左下 
            If (GetRValue(Bmp.Canvas.Pixels[X,    Y + 1]) = RGBz) Then Inc(NearDots) ;    // 下 
            If (GetRValue(Bmp.Canvas.Pixels[X + 1, Y + 1] )= RGBz) Then Inc(NearDots) ;    // 右下 

            // 如果 与周围8个点RGB相等的点数 < 输入的降噪率,此点为噪点 
            If (NearDots < N) Then 
              Bmp.Canvas.Pixels[x,y] := clWhite // 把噪点颜色设置为白色(降噪) 
          End ; 
        End; 
      End ; 
    End ; 
    Bmp.SaveToFile(OutBmpFile); 
    Result := 0 ; 
  Finally 
    Bmp.Free ; // 释放 TBitmap 
  End ; 
End; 

分享到:
评论

相关推荐

    84. 一文道尽传统图像降噪方法 - hacker_long的专栏 - CSDN博客1

    01 图像降噪的重要性与挑战 图像降噪是计算机视觉和图像处理领域的基础步骤,其目的是在不损害图像重要信息的前提下,去除由于捕获、传输或存储过程引入的噪声。高质量的图像预处理对于后续任务,如图像分割、目标...

    基于DSP的图像降噪系统

    【基于DSP的图像降噪系统】是数字信号处理(DSP)技术在图像处理领域中的一个重要应用,主要目标是去除图像中的噪声,提升图像质量。在实际应用中,图像常常受到各种因素的影响,如光照变化、拍摄设备的不稳定性、...

    7种图像降噪matlab实现

    在图像处理领域,降噪是一项至关重要的任务,它旨在消除图像中的噪声,提高图像质量,以便于后续的分析和识别。本资源提供了7种不同的MATLAB实现方法来处理这一问题,包括程序源码、结果图以及相关的说明书和任务书...

    myKSVD_SVD图像降噪_机器学习_K-SVD_K._Pythonsvd降噪_

    标题中的“myKSVD_SVD图像降噪_机器学习_K-SVD_K._Pythonsvd降噪_”表明我们将讨论一种基于K-SVD算法的图像降噪方法,它结合了机器学习的概念,并在Python环境中实现了Singular Value Decomposition (SVD)技术。...

    小波分析理论与图像降噪处理

    小波分析理论与图像降噪处理是现代图像处理领域中一个极为重要的研究方向。小波分析,作为一种强大的数学工具,不仅在信号处理中扮演着关键角色,而且在图像处理,尤其是图像降噪方面展现出了独特的优势。下面我们将...

    图像降噪Demo

    "图像降噪Demo"是一个基于Malab的示例应用,它演示了如何处理视频图像,以减小噪声对图像的影响。在这个Demo中,重点可能会集中在使用二进小波变换(Biorthogonal Wavelet Transform)进行图像增强。 二进小波变换...

    PCA图像降噪新算法-patch based PCA

    源自大牛Joseph Salmon的PCA图像降噪新算法-patch based PCA,可以进行高斯噪声、泊松噪声等多种噪声的降噪处理,且能去的比较好的效果。内含代码和对应的文献,值得学习图像处理的看看!

    基于小波变换的图像降噪

    介绍了小波变换的基础知识、图像降噪的基本理论以及研究成果

    医学图像降噪处理及计算机辅助诊断_matlab_医学图像降噪_医学图像诊断_医学图像_

    本文将深入探讨医学图像降噪处理及其在计算机辅助诊断中的应用,基于MATLAB这一强大的编程环境进行讲解。 首先,我们要理解医学图像降噪的重要性。医学图像通常受到各种噪声干扰,如设备噪声、信号采集过程中的噪声...

    xiaobo_tuxiangyuzhi.rar_图像降噪程序_小波图像降噪

    小波图像降噪是图像处理领域中的一个重要技术,主要用于去除图像中的噪声,同时尽可能保留图像的重要细节和边缘信息。在给定的“xiaobo_tuxiangyuzhi.rar”压缩包中,包含了一个用于实现这一功能的源程序,这对于...

    基于小波变换的图像降噪.zip_二次小波_图像去噪_图像消噪_图像降噪_小波图像降噪

    基于小波变换的图像去噪,从含噪图像可以看出噪声含量非常强,而从去噪的结果可以看出,通过小波去噪后的图像基本和原图像一致。第一次消噪滤去了大部分高频噪声,但与原图比较,依然有不少高频噪声,第二次消噪在第...

    ROF图像降噪处理python程序

    在图像处理领域,ROF(Rudin-Osher-Fatemi)图像降噪算法是一种广泛应用的方法,它基于Total Variation(TV)理论,旨在保持图像的边缘锐利度同时去除噪声。Python作为强大的数据处理和科学计算语言,为实现这一算法...

    基于FPGA的实时高污染图像降噪器的设计

    在现代图像处理领域,图像降噪是一项关键的技术,尤其对于高污染图像的处理尤为重要。高污染图像指的是包含有大量噪声的图像,这些噪声可能是由传感器的缺陷、传输过程中的干扰、或是图像采集环境中的杂乱背景造成的...

    基于卷积神经网络的遥感图像降噪.pdf

    本文总结了基于卷积神经网络的遥感图像降噪的相关知识点,涵盖了遥感图像降噪的重要性、传统降噪方法的缺陷、卷积神经网络在图像降噪中的应用、深度学习在遥感图像降噪中的作用等方面。 一、遥感图像降噪的重要性 ...

    基于小波包的图像降噪及Matlab实现.pdf

    ### 基于小波包的图像降噪及Matlab实现 #### 摘要与背景 本文讨论了如何利用小波包变换技术来进行图像降噪,并通过Matlab软件实现该算法。在图像处理领域中,图像往往会在采集、传输过程中受到外界环境噪声的影响...

    图像降噪和增强对人脸识别系统识别性能的影响.pdf

    图像降噪和增强对人脸识别系统识别性能的影响 人脸识别系统是当前公安机关非常关心的一项技术,它可以快速地识别和确认嫌疑人的身份。然而,人脸识别系统的识别性能直接取决于图像质量,而图像质量又受到噪声和干扰...

    7种图像降噪matlab实现.zip

    本压缩包“7种图像降噪matlab实现.zip”包含七种不同的MATLAB实现方法,这些方法是针对图像降噪的常用技术。通过源码和结果图,我们可以深入理解每种算法的工作原理和效果。以下是这七种降噪方法的详细介绍: 1. **...

    PDE.rar_image denoising_图像降噪_降噪

    标题中的"PDE.rar"指的是基于偏微分方程(PDE)的图像降噪方法,而"image denoising"和"图像降噪_降噪"的标签则明确表示了这个程序是用于去除图像中的噪声。MATLAB是一种广泛应用于科学计算、图像处理和数据分析的...

Global site tag (gtag.js) - Google Analytics