【发布时间】:2015-06-13 20:24:53
【问题描述】:
图像 'lena.tif' 它必须分成 2 个大小为 8x8 的块。在每个块中都应该计算平均值和标准偏差,然后将这些结果保存在一个大小为 32x32 的图像中。可视化图像并解释结果?
请帮助我提供完整的解决方案,因为我是 matlab 的初学者
【问题讨论】:
图像 'lena.tif' 它必须分成 2 个大小为 8x8 的块。在每个块中都应该计算平均值和标准偏差,然后将这些结果保存在一个大小为 32x32 的图像中。可视化图像并解释结果?
请帮助我提供完整的解决方案,因为我是 matlab 的初学者
【问题讨论】:
我猜你的意思是:将 256x256 的图像分成 8x8 块;对于每个计算平均值和标准差;并将结果保存为 32x32 矩阵。
这可以通过blockproc 轻松完成:
%// Load image
im = double(imread('lena.png')); %// 256x256 grayscale image
%// Compute block mean and std
m = blockproc(im, [8 8], @(b) mean(b.data(:))); %// 32x32 matrix of block means
s = blockproc(im, [8 8], @(b) std(b.data(:))); %// 32x32 matrix of block std's
%// Normalize to [0,1]
m = m-min(m(:));
m = m./max(m(:));
s = s-min(s(:));
s = s./max(s(:));
%// Write
N = 256; %// number of levels for writing m and s
imwrite(m*N, gray(N), 'lena_mean.png') %// save m as N-level grayscale image
imwrite(s*N, gray(N), 'lena_std.png') %// save s as N-level grayscale image
生成的图像:
平均值
标准差
【讨论】: