找到对的形象

7视图(30天)
Vennila Gangatharan
Vennila Gangatharan 2013年2月3日
评论道: 图像分析 2021年12月10日
你好,
我有一个1024 x1024灰色图像。我想扫描32 x32像素的窗口
从上到下和从左到右以找到每个窗口的平均值。
我该怎么办呢?

接受的答案

图像分析
图像分析 2013年2月3日
看到这个演示。这将是很容易适应。基本上你这样做:
meanFilterFunction = @ (theBlockStructure)非常刻薄(theBlockStructure.data(:)) * 1(2 2类(theBlockStructure.data));
blockSize = [32 32];
blockyImage = blockproc (grayImage blockSize meanFilterFunction);
这里有完整的演示:
%演示代码,把图像分成16像素的像素块
%和替换块中的每个像素的值,或标准
%的偏差中的所有像素的灰度值。
%
clc;
clearvars;
关闭所有;
工作空间;
字形大小= 16;
%读入一个标准的MATLAB灰度图像演示。
文件夹= fullfile (matlabroot,“\工具箱\ \ imdemos图像”);
如果~存在(文件夹,“dir”)
%如果文件夹不存在,不要使用一个文件夹
%,希望能找到图像的搜索路径。
文件夹= [];
结束
baseFileName =“cameraman.tif”;
fullFileName = fullfile(文件夹,baseFileName);
grayImage = imread (fullFileName);
%得到图像的尺寸。numberOfColorBands应该= 1。
[行列numberOfColorBands] =大小(grayImage)
%显示原始灰度图像。
次要情节(2 2 1);
imshow (grayImage []);
标题(的原始灰度图像,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“位置”get (0,“拉”));
集(gcf,“名字”,“图像分析演示”,“numbertitle”,“关闭”)
%定义的函数,我们将适用于每一块。
%的第一个在这个演示,我们将灰度值中值
%和创建一个平等的块大小,所有像素的中值。
%的形象将是相同的尺寸,因为我们正在使用的()和对每个块
%会有一块8 * 8的输出像素。
medianFilterFunction = @ (theBlockStructure)中位数(theBlockStructure.data(:)) *的(大小(theBlockStructure.data)类(theBlockStructure.data));
%块处理图像中的每一个像素都取代
% 8像素由8像素块中的像素块的中值。
blockSize = [8];
%怪癖:必须把grayImage为它使用单引号或双位数()。
% blockyImage8 = blockproc (grayImage、blockSize medianFilterFunction);%是行不通的。
blockyImage8 = blockproc(单(grayImage), blockSize medianFilterFunction);%的工作原理。
行(列)= (blockyImage8)大小;
%显示块图像中值。
次要情节(2,2,2);
imshow (blockyImage8 []);
标题= sprintf (”块中值图像\ n32块。输入块大小= 8、输出块大小= 8 \ n % d % d列的行、行、列);
标题(标题,“字形大小”、字形大小);
%块处理图像中的每一个像素都取代
% 4×4像素的均值像素块的块。
% 256像素图像会给256/4 = 64块。
%注意输出块的大小(2×2)不需要输入块的大小!
%的形象将是128 x 128由于我们使用的(2,2)所以为每个64块
%会有一块2×2的输出像素,给一个输出大小为64 * 2 = 128。
%我们仍将有64块但是每个块只会2输出像素,
%即使我们搬到步骤4像素的输入图像。
meanFilterFunction = @ (theBlockStructure)非常刻薄(theBlockStructure.data(:)) * 1(2 2类(theBlockStructure.data));
blockSize = 4 [4];
blockyImage64 = blockproc (grayImage blockSize meanFilterFunction);
行(列)= (blockyImage64)大小;
%显示块均值图像。
次要情节(2、2、3);
imshow (blockyImage64 []);
标题= sprintf (块意味着图像\至今块。输入块大小= 4、输出块大小= 2 \ n % d % d列的行、行、列);
标题(标题,“字形大小”、字形大小);
%块处理图像中的每一个像素都取代
% 8像素由8像素块的标准差
%的像素块。
%的形象会更小,因为我们不使用的每个块()等
%将只有一个输出像素,而不是一块8 * 8的输出像素。
blockSize = [8];
StDevFilterFunction = @ (theBlockStructure)性病(双(theBlockStructure.data (:)));
blockyImageSD = blockproc (grayImage blockSize StDevFilterFunction);
行(列)= (blockyImageSD)大小;
%显示块标准偏差过滤图像。
次要情节(2、2、4);
imshow (blockyImageSD []);
标题(的标准偏差过滤后的图像,“字形大小”、字形大小);
标题= sprintf (“块标准差\ n32过滤图像块。输入块大小= 8、输出块大小= 1 \ n % d % d列的行、行、列);
标题(标题,“字形大小”、字形大小);
5个评论
图像分析
图像分析 2021年12月10日
我看不出任何方式你会得到一个输出的16个16。
如果你使用一个图像blocksize 8 80 x120,和不使用的(),结果将是10×15。不是8乘8。
meanFilterFunction = @ (theBlockStructure)非常刻薄(theBlockStructure.data (:));
blockSize = [8];
blockyImage = blockproc (grayImage blockSize meanFilterFunction);
怎么可能给你8乘8 ? ? ? ?垂直与80行你可以容纳10瓦,120年列还可以适合15瓦(宽度8)水平。所以输出图像应该10连接,而不是8×8。
如果你 想要 输出的8×8你需要8块高度10和8块的宽度120/8 = 15。和不使用的。然后,与
meanFilterFunction = @ (theBlockStructure)非常刻薄(theBlockStructure.data (:));
blockSize = (10、15);
blockyImage = blockproc (grayImage blockSize meanFilterFunction);
将8×8的输出。

登录置评。

更多的答案(2)

1月
1月 2013年2月12日
img =兰德(1024、1024);
b =重塑(img, 32岁,32岁,32岁,32);
m =挤压(总和(和(b, 1), 3) / (32 * 32));

neelavathi d
neelavathi d 2016年3月18日
如何找到每一块的平均值吗
1评论
图像分析
图像分析 2016年3月18日
你忽视上面的答案了吗?

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!