只有期末考试那一段时间,才敢说自己真正的学了这门课
幂律变换matlab代码:
clear all x=double(imread(‘3.png‘)); figure, imshow(x/255); H=x/255; % y=log(1+x)*255; n=1/2; c=1; y=255*c*H.^n; figure, imshow(y/255);
最简单的分段线性变换之一是对比度拉伸变换(constrast stretching), 用于扩展灰度级范围。
刚开始看博客居然没看懂,最后发现原来就是设置最小灰度值,最大灰度值,把图片之中小于最小灰度值的像素点都设为最小灰度值,大于最大灰度值的像素点都设置为最大灰度值。这样刚开始觉得无聊,但是压缩了图像的灰度区间。虽然觉得没啥用,但是提出来了就提出来了
这是matlab官方的参考代码:
I = imread(‘pout.tif‘); J = imadjust(I,[0.3;0.7],[]) imshow(I), figure, imshow(J)
matlab有imhist看一个图像的灰度直方图分布,但是自己实现的话就是:不过说实话,确实丑
I=double(rgb2gray(imread(‘1.png‘))); M=reshape(I,1,size(I,1)*size(I,2)); hist(M,256)
如果直方图灰度值低的集中,表明曝光不充分,灰度值在高位集中表明曝光过分,最好的就是使得图片的灰度值能够在成均匀分布。
图片是离散的像素点,所以说r是从0-255的灰度值,pr(r)就是像素点在图片中出现的频数/图片像素点数目。
所以说图像的均质化的数学形式是:
x=double(rgb2gray(imread(‘1.png‘))); [M,N]=size(x); figure,imshow(x/255,[]) for i=1:256 h(i)=sum(sum(x==i-1)); end y=x; s=sum(h); for i=1:256 I=find(x==i-1); y(I)=255*sum(h(1:i))/s; end figure,imshow(y/255,[])
自适应直方图均衡化方法(AHE):
直方图均衡化是整体的均衡化,但是这样在很大程度上是忽略了必要的细节的,这个就设置了阈值,从而对图像细节进行保留
matlab官方参考代码:
% Demo I = imread(‘tire.tif‘); J = histeq(I); A = adapthisteq(I,‘clipLimit’,0.02,‘Distribution‘,‘rayleigh‘); figure, imshow(I); figure, imshow(J); figure, imshow(A);
作为没有学信号处理的孩纸,理解卷积可以参考赞最多的那个,知乎
一维卷积,例题是以化简的方式写的,所以刚开始看看不懂意义,是正常的,但是,一定要在之后对其进行理解。
卷积要定义是0边界、反射边界还是循环边界
0边界会生成Toeplitz矩阵,张这样:
循环边界会生成这样的矩阵:
又因为循环边界矩阵能进行奇异值(SVD)分解,能够减小计算度,所以说,很多时候会选择使用循环边界,随着计算机的性能的提高,以后一般都会选择更加好的边界,而计算度的权重会相应地减小。
二维卷积,看公式太过于麻烦,所以说我直接上图,简单明了。就是一个一个套,最终套出滤波处理后的图像。
0边界会有block Toeplitz Toeplitz block 矩阵
周期边界会生成block Circulant Circulant block 矩阵
有了滤波,接下来就是对图像的处理了:
点操作,邻域操作
点操作,即只考虑那个像素点的信息,通过现有的像素点的灰度值,再使用函数得出转换后的该像素点所有的灰度值。(灰度变换应该算是)
邻域操作,由于图像由于是表示的是一个事务的征途,所以像素点灰度值存在连贯性,所以可以通过某一像素点的领域像素点的灰度值,得出该点应有的灰度值(卷积滤波)
空间滤波器:由一个领域及其对该领域包围的图像像素执行的预定操作组成。我们称其为滤波器(filter)、 掩模(mask)、核(kernel)、模板(template)或窗口(window)。
平滑算子用于模糊处理和降低噪声,去掉图像之中的细节,使得图像之中的细节能够连接在一起。
原文:http://www.cnblogs.com/kangronghu/p/6266637.html