---慢慢地go through冈萨雷斯的DIP和配套的matlab,记下一些零碎的知识点给自己以后复习。
DIP CH03 亮度变换与空间滤波
矩阵A=[1,2,3;4,5,6]
sum(A,1)对A的第一个维度求和,sum(A,2)对A的第二个维度求和;
prod(A,n),max(A,n),min(A,n),mean(A,n)类似,分别对A的第n个维度求乘积,最大值,最小值和平均值;
默认n=1,所以要对矩阵A所有元素求和,可以sum(sum(A)),相当于sum(sum(A,1),2),当然也可以直接sum(A(:));
[val,idx] = max(A(:))返回A最大值和位置,min类似;
std(A)求标准差用,std(A,Flag,Dim),Dim相当于前边所说的n,默认Flag=0,计算标准差时,均方取平均用N-1去除(N是样本个数),Flag=1时,均方取平均用N去除;
亮度变换
g = imadjust( f, [low_in,high_in], [low_out,high_out], gamma ) --- gamma默认为1,表示线性映射,注意输入输出均在0到1之间,high_out可以比low_out小,表示亮度反转;
g = imcomplement( f ) --- 亮度反转;
直方图
h = imhist( f ) --- 直方图显示,还有其他显示设置方式;
g = histeq( f, 256 ) --- 直方图均衡化,第二个参数是灰度级别最大可能数量,默认为64,通常我们设为256(8-bit),g是直方图均衡化后的图像,用imhist(g)来查看效果;
--- numel(f)为f元素总数(f为图像就得到像素总数了);
--- hnorm = imhist(f)./numel(f)得到归一化直方图(各亮度出现频率), 向量;
--- cdf = cumsum(hnorm),cumsum()对向量实现元素累加,即 cdf(n) = sum(hnorm(1:n)),这样就可以得到亮度转换函数;
g = histeq( f, hspec ) --- 直方图规定化/直方图匹配,hspec是指定的直方图,行向量;
线性空间滤波
w = fspecial( 'type', paras ) --- 构造掩模,常用type有average,gaussian,laplacian,prewitt,soble,而paras则为设置参数,可设置掩模尺寸和分布参数;
g = imfilter( f, w, '**' ) --- 对图像f用掩模w进行滤波操作,**是处理边界方式,常见方式有replicate,symmetric,默认使用0填充;
非线性空间滤波
g = medfilt2( f ) --- 中值滤波;