Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab图像块处理_Matlab_Image Processing - Fatal编程技术网

Matlab图像块处理

Matlab图像块处理,matlab,image-processing,Matlab,Image Processing,我想要的是,得到一个图像,把它分解成nxn块,对每个块应用标准偏差,然后使其成为二进制 所有这些都是从图像中获取文本的一部分。到目前为止,我想找出感兴趣的地区 为什么第三张图片是这样的呢 原始图像: 缩放 您加载的图像可能包含uint8值(0到255)。然后通过blockproc对其执行std2。其输出类型为双精度,但尚未缩放,因此其中的值与原始值具有相似的数量级 然后在没有任何输入的情况下调用im2bw。这会将阈值级别设置为0.5,如果您假定double类型的图像缩放范围在0和1之间(许多MA

我想要的是,得到一个图像,把它分解成nxn块,对每个块应用标准偏差,然后使其成为二进制

所有这些都是从图像中获取文本的一部分。到目前为止,我想找出感兴趣的地区

为什么第三张图片是这样的呢

原始图像:

缩放

您加载的图像可能包含
uint8
值(0到255)。然后通过
blockproc
对其执行
std2
。其输出类型为双精度,但尚未缩放,因此其中的值与原始值具有相似的数量级

然后在没有任何输入的情况下调用
im2bw
。这会将阈值级别设置为0.5,如果您假定double类型的图像缩放范围在0和1之间(许多MATLAB图像处理的标准假设),这是一个合理的设置。但是,在您的例子中,显然大多数值都在0.5以上,因此绝大多数显示为白色

两种选择:

1) 缩放图像(例如,将图像传递到
blockproc

2) 给
im2bw
一个阈值。您可以使用
graysthresh
自动计算一个,例如
BW=im2bw(J,graysthresh(J))

请注意,此缩放问题将影响其他图像处理过程和保存图像。类型为double的图像,或者您要对其进行处理,使其加倍?在处理之前,请确保它在0和1之间缩放,或
im2double
。这样,当保存的图像显示为空白时,您就不用再回来问问题了。

缩放

您加载的图像可能包含
uint8
值(0到255)。然后通过
blockproc
对其执行
std2
。其输出类型为双精度,但尚未缩放,因此其中的值与原始值具有相似的数量级

然后在没有任何输入的情况下调用
im2bw
。这会将阈值级别设置为0.5,如果您假定double类型的图像缩放范围在0和1之间(许多MATLAB图像处理的标准假设),这是一个合理的设置。但是,在您的例子中,显然大多数值都在0.5以上,因此绝大多数显示为白色

两种选择:

1) 缩放图像(例如,将图像传递到
blockproc

2) 给
im2bw
一个阈值。您可以使用
graysthresh
自动计算一个,例如
BW=im2bw(J,graysthresh(J))

请注意,此缩放问题将影响其他图像处理过程和保存图像。类型为double的图像,或者您要对其进行处理,使其加倍?在处理之前,请确保它在0和1之间缩放,或
im2double
。这样,当保存的图像显示为空白时,您就不用再回来问问题了。

缩放

您加载的图像可能包含
uint8
值(0到255)。然后通过
blockproc
对其执行
std2
。其输出类型为双精度,但尚未缩放,因此其中的值与原始值具有相似的数量级

然后在没有任何输入的情况下调用
im2bw
。这会将阈值级别设置为0.5,如果您假定double类型的图像缩放范围在0和1之间(许多MATLAB图像处理的标准假设),这是一个合理的设置。但是,在您的例子中,显然大多数值都在0.5以上,因此绝大多数显示为白色

两种选择:

1) 缩放图像(例如,将图像传递到
blockproc

2) 给
im2bw
一个阈值。您可以使用
graysthresh
自动计算一个,例如
BW=im2bw(J,graysthresh(J))

请注意,此缩放问题将影响其他图像处理过程和保存图像。类型为double的图像,或者您要对其进行处理,使其加倍?在处理之前,请确保它在0和1之间缩放,或
im2double
。这样,当保存的图像显示为空白时,您就不用再回来问问题了。

缩放

您加载的图像可能包含
uint8
值(0到255)。然后通过
blockproc
对其执行
std2
。其输出类型为双精度,但尚未缩放,因此其中的值与原始值具有相似的数量级

然后在没有任何输入的情况下调用
im2bw
。这会将阈值级别设置为0.5,如果您假定double类型的图像缩放范围在0和1之间(许多MATLAB图像处理的标准假设),这是一个合理的设置。但是,在您的例子中,显然大多数值都在0.5以上,因此绝大多数显示为白色

两种选择:

1) 缩放图像(例如,将图像传递到
blockproc

2) 给
im2bw
一个阈值。您可以使用
graysthresh
自动计算一个,例如
BW=im2bw(J,graysthresh(J))


请注意,此缩放问题将影响其他图像处理过程和保存图像。类型为double的图像,或者您要对其进行处理,使其加倍?在处理之前,请确保它在0和1之间缩放,或
im2double
。这将避免您在保存的图像显示为空白时返回此处询问有关的问题。

请发布原始图像alone@Benoit_11@Rentonie否,更新您的问题,
clear
I = imread('punk.jpg');
figure; imshow(I);
B=blockproc(I, [4 4], @(x) std2(x.data(:)));
figure;
imshow(B,[]);
J = imresize(B, 4);
figure;
imshow(J,[]);

BW = im2bw(J);
figure;
imshow(BW);