一分钟了解“Matlab实现max-mean滤波”
2017-06-23 09:49
387 查看
function result_maxmean=maxMeanFunc(im,patch_size)
%
% Depeng Liu
% Chongqing University
%
if( mod(patch_size,2)==0 ) %if
error('模版大小必须为奇数');
end %if
result_maxmean=999*ones(size(im));
im2=padarray(im,[patch_size patch_size],'symmetric','both');%根据模版的大小扩展一下原图
half_patch_size=(patch_size-1)/2;
for num_row=patch_size+1:1:size(im2,1)-patch_size %num_row
for num_column=patch_size+1:1:size(im2,2)-patch_size %num_column
liedequzhimen=num_column-half_patch_size:num_column+half_patch_size;%列号在变化
yihangdezhongzhi=mean( im2(num_row,liedequzhimen) ); %所以结果是一行的中值
hangdequzhimen=num_row-half_patch_size:num_row+half_patch_size;%行号在变化
yiliedezhongzhi=mean( im2(hangdequzhimen,num_column) );%所以结果是一列的中值
zhuzhoudezhongzhi=mean( diag( im2(hangdequzhimen,liedequzhimen)) );%这是主轴的中值
dangqiankuai= im2(hangdequzhimen,liedequzhimen);
dangqiankuaidefuzhuzhou=[];
for dangqianxiexuhao=1:patch_size %for1
dangqiankuaidefuzhuzhou= [dangqiankuaidefuzhuzhou,dangqiankuai(dangqianxiexuhao,patch_size+1-dangqianxiexuhao)] ;
end %for1
fuzhoudezhongzhi=mean( dangqiankuaidefuzhuzhou );%这是副轴的中值
result_maxmean(num_row-patch_size,num_column-patch_size)=im2(num_row,num_column)-max([yihangdezhongzhi,yiliedezhongzhi,zhuzhoudezhongzhi,fuzhoudezhongzhi]);
end %num_column
end %num_row
end %function
%
% Depeng Liu
% Chongqing University
%
if( mod(patch_size,2)==0 ) %if
error('模版大小必须为奇数');
end %if
result_maxmean=999*ones(size(im));
im2=padarray(im,[patch_size patch_size],'symmetric','both');%根据模版的大小扩展一下原图
half_patch_size=(patch_size-1)/2;
for num_row=patch_size+1:1:size(im2,1)-patch_size %num_row
for num_column=patch_size+1:1:size(im2,2)-patch_size %num_column
liedequzhimen=num_column-half_patch_size:num_column+half_patch_size;%列号在变化
yihangdezhongzhi=mean( im2(num_row,liedequzhimen) ); %所以结果是一行的中值
hangdequzhimen=num_row-half_patch_size:num_row+half_patch_size;%行号在变化
yiliedezhongzhi=mean( im2(hangdequzhimen,num_column) );%所以结果是一列的中值
zhuzhoudezhongzhi=mean( diag( im2(hangdequzhimen,liedequzhimen)) );%这是主轴的中值
dangqiankuai= im2(hangdequzhimen,liedequzhimen);
dangqiankuaidefuzhuzhou=[];
for dangqianxiexuhao=1:patch_size %for1
dangqiankuaidefuzhuzhou= [dangqiankuaidefuzhuzhou,dangqiankuai(dangqianxiexuhao,patch_size+1-dangqianxiexuhao)] ;
end %for1
fuzhoudezhongzhi=mean( dangqiankuaidefuzhuzhou );%这是副轴的中值
result_maxmean(num_row-patch_size,num_column-patch_size)=im2(num_row,num_column)-max([yihangdezhongzhi,yiliedezhongzhi,zhuzhoudezhongzhi,fuzhoudezhongzhi]);
end %num_column
end %num_row
end %function
相关文章推荐
- 一分钟了解“Matlab实现max-median滤波”
- 一分钟了解“MATLAB对图像任意mask滤波”
- 一分钟了解“Matlab实现tophat变换”
- 一分钟了解“MATLAB对图像进行均值滤波”
- 一分钟了解“matlab实现用对话框手选的方式打开文件”
- 一分钟了解"matlab用meshgrid实现for循环的遍历功能"
- MatLab实现Softmax Regression
- 用matlab实现视频的空间滤波和直方图均衡化
- 自适应滤波的matlab实现
- matlab实现图割算法中的最大流最小割Max-flow/min-cut问题(一)
- 图像算法之十二:非局部均值滤波及其Matlab实现
- Matlab---图像滤波之各种滤波器汇总实现
- 七中滤波方法测试matlab实现
- Matlab中图像处理实例:灰度变换,空域滤波,频域滤波,傅里叶变换的实现
- 七种滤波方法的matlab实现和测试
- 用matlab实现视频的空间滤波和直方图均衡化
- 均值滤波、中值滤波的matlab实现
- 数字图像处理,经典滤波算法去噪对比实验(Matlab实现)
- Gabor滤波简介和实现(Matlab,OpenCV)
- 滑动均值滤波的matlab实现和Java实现