• 图像处理与计算机视觉--第四章-图像滤波与增强-第二部分


    目录

    1.图像噪声化处理与卷积平滑

    2.图像傅里叶快速变换处理

    3.图像腐蚀和膨胀处理

    4 图像灰度调整处理

    5.图像抖动处理算法

    1. 学习计算机视觉方向的几条经验:
    2. 1.学习计算机视觉一定不能操之过急,不然往往事倍功半!
    3. 2.静下心来,理解每一个函数/算法的过程和精髓,这个知识才真正是你的!
    4. 3.计算机视觉的参数非常多,你必须理解透并且学会运用,不然你只能做个调参侠!
    5. 4.做一件事就必须要从中学到什么,否则就算是再大的荣誉只是混来的,不真正属于你!
    6. 以上经验总结来自Neu.Ise.JiaT.Prof,也是Neu做cv的数一数二的教授了,希望能够带着这些经验继续前进,在cv的学习中有所感悟和收获!
    1. *******************************************************************************************
    2. END IN 2023/09/27/01:40:
    3. 又是一个小通宵,明天还有早八,真的要完全理解这些函数很难,每写一段都需要30分钟左右的
    4. 学习理解过程,以及我的matlab水平不如python那般熟练,有的地方绘图还需要不断的查找资料和
    5. 别人的博客,然后不断的去修改代码,matlab的绘图确实不熟练,我需要花费2-2.5个小时才能勉
    6. 强完成这样一篇总结。
    7. 确实很累,但是如果感觉累的话是幸运的,因为说明你在进步,因为上坡的路都是困难的。
    8. *******************************************************************************************

    1.图像噪声化处理与卷积平滑

    1. 图像噪声化处理与卷积平滑:
    2. 图片首先经过imnoise()函数的处理,增加噪声参数,变得模糊混乱,然后我们在通过卷积的方式让图像
    3. 整体变得平滑并且消除模糊的程度。
    4. 噪声函数:imnoise(I,'gaussian',均值u,标准差)
    5. 卷积函数:conv2(I,h) %I表示图像 h表示卷积核
    1. %%
    2. %%image line filter
    3. clear
    4. I = imread('moon.tif')
    5. subplot(131);
    6. imshow(I)
    7. %imnoise噪声使得图像变得更模糊嘈杂
    8. I = imnoise(I,'gaussian',0,0.02);%添加均值为0,方差为0.02的噪声
    9. subplot(132)
    10. imshow(I)
    11. %绘制第二张子图
    12. subplot(133)
    13. h=[1 1 1
    14. 1 1 1
    15. 1 1 1];
    16. h = h/9;
    17. %conv2函数来对添加了噪声的图像 I 进行线性卷积操作,
    18. %这个操作实际上是一个平滑滤波操作,它通过计算每个像素周围3x3邻域的加权平均值来减小图像中的高频噪声,
    19. %从而使图像变得更加平滑。
    20. J = conv2(I,h);
    21. imshow(J,[])
    22. saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','image line filter','.png'])

     

    2.图像傅里叶快速变换处理

    1. 图像傅里叶快速变换处理:
    2. 首先加载图像,对于图像有总体的理解.
    3. 其次对其执行FFT变换,fft2(I)函数将图像从时间域转向频域,并且画出可视化图片.
    4. 再研究FFT结果的移位版本fftshift(fft2(I)),分析傅里叶变换的特点.
    5. 最后给出频谱图像的对数幅度。这有助于分析图像中的频域信息,对于信息能够更好的理解.
    1. %%
    2. % fft2
    3. clear
    4. load imdemos saturn2
    5. subplot(221);
    6. I = imread('moon.tif')
    7. imshow(I)
    8. title('Subplot 1:原图渲染')
    9. subplot(222);
    10. b = fft2(I)%二维快速傅里叶变换
    11. imshow(b)
    12. title('Subplot 2:二维快速傅里叶变换')
    13. subplot(223);
    14. b=fftshift(fft2(I));%这行代码首先对FFT结果进行了移位操作,将低频分量移到图像中心。然后,它再次计算FFT,得到移位后的频谱图像 b。
    15. imshow(b)
    16. title('Subplot 3:傅里叶变换移位')
    17. subplot(224);
    18. imshow(log(abs(b)),[])
    19. title('Subplot 4:频谱对数幅度图')
    20. colormap(jet(64))
    21. colorbar
    22. saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','fft','.png'])

    3.图像腐蚀和膨胀处理

    1. 图像的腐蚀和膨胀处理:
    2. 腐蚀和膨胀是针对白色部分(高亮部分)而言的。
    3. 膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;
    4. 腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。
    5. 膨胀用来处理缺陷问题;腐蚀用来处理毛刺问题。
    6. 膨胀问题:就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。
    7. 腐蚀问题:腐蚀操作和膨胀操作相反,也就是将毛刺消除,腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值(偏黑)替换锚点重叠下图像的像素值。
    1. %%
    2. % dilate&erode
    3. %图像腐蚀与膨胀
    4. clear
    5. close all
    6. subplot(131);
    7. I = imread('text.png')
    8. imshow(I)
    9. SE = ones(6,2)
    10. BW=imdilate(I,SE)
    11. title('Subplot 1:原图')
    12. subplot(132);
    13. imshow(BW)
    14. title('Subplot 2:图像腐蚀处理')
    15. subplot(133);
    16. BW2=imerode(I,SE)
    17. imshow(BW2)
    18. title('Subplot 3:图像膨胀处理')
    19. saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','dilate_erode','.png'])

    4 图像灰度调整处理

    1. 图像灰度调整处理:
    2. 1.通过函数imadjust()进行图像灰度的调整.
    3. 2.其中会用到一个J=imadjust( I,[low_in;high_in],[low_out;high_out]) 就是调整之后的灰度图像.
    4. 3.imadjust([x1,x2])表示当值大于x2*255时,灰度设置为1,当值小于x1*255时,灰度为0.
    1. %%
    2. %enhancement imadjust
    3. clear
    4. I = imread('tire.tif')
    5. J=imadjust(I,[0.3,0.7],[])%
    6. subplot(2,2,1)
    7. imshow(I)
    8. title('Subplot 2:原图')
    9. subplot(2,2,2)
    10. imshow(J)
    11. title('Subplot 2:灰度调整后图')
    12. subplot(2,2,3)
    13. imhist(I)
    14. title('Subplot 3:原图灰度图')
    15. subplot(2,2,4)
    16. imhist(J)
    17. title('Subplot 4:调整后灰度图')
    18. saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','enhancement imadjust','.png'])

    5.图像抖动处理算法

    1. 图像抖动处理算法:
    2. 1.对于可用颜色较少的系统,可以以牺牲分辨率为代价,通过颜色值的抖动来增加可用颜色数量。
    3. 2.没有使用抖动方法来进行颜色量化。这可能会导致颜色在索引图像中的分布更为均匀,但在某
    4. 些情况下可能会损失一些细节。
    5. 3.对比无抖动方法,抖动方法帮助尽量保留原始图像的颜色细节。
    6. 4.[X_no_dither,map]= rgb2ind(rgb,8,'nodither');//无抖动
    7. 5.[X_dither,map]=rgb2ind(rgb,8,'dither');//有抖动
    1. %%
    2. clear
    3. subplot(131);
    4. rgb=imread('onion.png');
    5. imshow(rgb);
    6. title('Subplot 1:原图')
    7. subplot(132);
    8. [X_no_dither,map]= rgb2ind(rgb,8,'nodither');
    9. imshow(X_no_dither,map);
    10. title('Subplot 2:=无抖动效果图')
    11. subplot(133);
    12. [X_dither,map]=rgb2ind(rgb,8,'dither');
    13. imshow(X_dither,map);
    14. title('Subplot 3:有抖动效果图')
    15. saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','imgae_dither','.png'])

     

  • 相关阅读:
    STK12与Python联合仿真(一):环境搭建
    OCR表格识别—(一)
    值类型与引用类型的区别,以及string类型的解释
    设计模式-结构型模式-桥接模式
    WEB前端 网页设计 简介
    一些技能点&语法糖(下)
    如何在新浪、搜狐、腾讯、网易、人民网等知名媒体网站上投稿
    生产制造业ERP管理系统能解决哪些问题?
    面试官:Zookeeper怎么解决读写、双写并发不一致问题,以及共享锁的实现原理?
    Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)
  • 原文地址:https://blog.csdn.net/m0_71819746/article/details/133326047