【图像处理】在MATLAB中计算图像所有不重叠邻域的像素均值,并将这些均值合成一幅新的图像

今天在看文献的时候,看到如下一句话:

This reduction is accomplished by taking the averages of all nonoverlapping 3*3 pixels. 即:通过计算所有不重叠3*3邻域的像素均值来实现(图像空间上的)减小。

意思是将一幅图像首先分为一个个的3*3邻域,求每个邻域内像素的均值,并将这些均值按原有次序组合成一幅新的图像,那么图像在空间尺寸上要小于原图像。

以MATLAB附带的图像pout.tif为例实现上述过程:

close all; clear all; clc;

I = im2double(imread('pout.tif')); 

fun = @(block_struct) mean2(block_struct.data);
I1 = blockproc(I, [3, 3], fun);

figure; 
subplot(121), imshow(I); 
subplot(122), imshow(I1); 

实现的效果图如下:


工作空间变量如下:


说明:

B=blockproc(A, [m,n], fun):该函数对输入图像A,采用大小为m*n的分离块,利用函数fun处理,处理后的结果连接成输出图像B。其中fun是函数句柄,该函数输入为结构体,返回矩阵,向量或变量。






猜你喜欢

转载自blog.csdn.net/qq_15971883/article/details/80225838
今日推荐