目录
- 学习计算机视觉方向的几条经验:
- 1.学习计算机视觉一定不能操之过急,不然往往事倍功半!
- 2.静下心来,理解每一个函数/算法的过程和精髓,这个知识才真正是你的!
- 3.计算机视觉的参数非常多,你必须理解透并且学会运用,不然你只能做个调参侠!
- 4.做一件事就必须要从中学到什么,否则就算是再大的荣誉只是混来的,不真正属于你!
- 以上经验总结来自Neu.Ise.JiaT.Prof,也是Neu做cv的数一数二的教授了,希望能够带着这些经验继续前进,在cv的学习中有所感悟和收获!
- *******************************************************************************************
- END IN 2023/09/27/01:40:
- 又是一个小通宵,明天还有早八,真的要完全理解这些函数很难,每写一段都需要30分钟左右的
- 学习理解过程,以及我的matlab水平不如python那般熟练,有的地方绘图还需要不断的查找资料和
- 别人的博客,然后不断的去修改代码,matlab的绘图确实不熟练,我需要花费2-2.5个小时才能勉
- 强完成这样一篇总结。
- 确实很累,但是如果感觉累的话是幸运的,因为说明你在进步,因为上坡的路都是困难的。
- *******************************************************************************************
- 图像噪声化处理与卷积平滑:
- 图片首先经过imnoise()函数的处理,增加噪声参数,变得模糊混乱,然后我们在通过卷积的方式让图像
- 整体变得平滑并且消除模糊的程度。
- 噪声函数:imnoise(I,'gaussian',均值u,标准差)
- 卷积函数:conv2(I,h) %I表示图像 h表示卷积核
- %%
- %%image line filter
- clear
- I = imread('moon.tif')
- subplot(131);
- imshow(I)
- %imnoise噪声使得图像变得更模糊嘈杂
- I = imnoise(I,'gaussian',0,0.02);%添加均值为0,方差为0.02的噪声
- subplot(132)
- imshow(I)
-
- %绘制第二张子图
- subplot(133)
- h=[1 1 1
- 1 1 1
- 1 1 1];
- h = h/9;
- %conv2函数来对添加了噪声的图像 I 进行线性卷积操作,
- %这个操作实际上是一个平滑滤波操作,它通过计算每个像素周围3x3邻域的加权平均值来减小图像中的高频噪声,
- %从而使图像变得更加平滑。
- J = conv2(I,h);
- imshow(J,[])
- saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','image line filter','.png'])

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

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

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

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