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 噪声图像中100px面积差的检测_Matlab_Image Processing_Compare_Imagemagick - Fatal编程技术网

Matlab 噪声图像中100px面积差的检测

Matlab 噪声图像中100px面积差的检测,matlab,image-processing,compare,imagemagick,Matlab,Image Processing,Compare,Imagemagick,假设你有一张照片 如果面积/对比度/色差超过100像素(以平方米为单位),则需要发出警报。 因此,算法对这张图片说yes,但对下面的图片说no 可能的工具包括 ImageMagick的比较,但我不认为这是最好的方法 Matlab-这里内置了一些函数,但我不知道是哪个 Matlab R2014b中Shai代码的输出 这之后的一些阶段 找到进程分离的正确阈值 如Shai所述,分离流程 做决策-只要找到一个100px的面积,就用正方形计算白色区域的数量 如何在两个文件之间选取100px

假设你有一张照片

如果面积/对比度/色差超过100像素(以平方米为单位),则需要发出警报。 因此,算法对这张图片说yes,但对下面的图片说no

可能的工具包括

  • ImageMagick的比较,但我不认为这是最好的方法
  • Matlab-这里内置了一些函数,但我不知道是哪个
Matlab R2014b中Shai代码的输出

这之后的一些阶段

  • 找到进程分离的正确阈值
  • 如Shai所述,分离流程
  • 做决策-只要找到一个100px的面积,就用正方形计算白色区域的数量

如何在两个文件之间选取100px区域差异?

使用积极的平均过滤器来消除噪声和阈值:

%// read image and convert to single channel gray-scale:
img1 = imread('http://i.stack.imgur.com/ZDoUe.png');
img1 = rgb2gray(img1);
img2 = imread('http://i.stack.imgur.com/TOs0w.png');
img2 = rgb2gray(img2);

%// use aggressive average filter
f1 = imfilter( img1, ones(11)/121, 'symmetric');
f2 = imfilter( img2, ones(11)/121, 'symmetric');
一旦粗略地去除了噪声,就可以对过滤后的图像设置阈值

bw1 = f1 > 128;
bw2 = f2 > 128;
得到的阈值图像是:

我相信你可以从这里开始…

使用积极的平均滤波器来消除噪声和阈值:

%// read image and convert to single channel gray-scale:
img1 = imread('http://i.stack.imgur.com/ZDoUe.png');
img1 = rgb2gray(img1);
img2 = imread('http://i.stack.imgur.com/TOs0w.png');
img2 = rgb2gray(img2);

%// use aggressive average filter
f1 = imfilter( img1, ones(11)/121, 'symmetric');
f2 = imfilter( img2, ones(11)/121, 'symmetric');
一旦粗略地去除了噪声,就可以对过滤后的图像设置阈值

bw1 = f1 > 128;
bw2 = f2 > 128;
得到的阈值图像是:

我相信你可以从这里开始…

我仍然不明白你的问题,或者@Shai的答案有什么问题。就我所见,ImageMagick的解决方法与Shai建议的完全相同,因此我也不明白为什么您认为ImageMagick是错误的方法。也许你可以澄清你真正想要的是什么,这样我们就可以试着进一步帮助你

不管怎样,现在,我会用ImageMagick的方法

convert input.png -blur x5 -threshold 50%  output.png

如果要计算白色像素,我会克隆图像并将克隆中的所有像素设置为黑色,然后让ImageMagick以绝对值告诉我克隆和原始之间有多少像素不同,如下所示:

convert output.png \( +clone -evaluate set 0 \) -metric AE -compare -format "%[distortion]" info:
输出

89008
如果你想计算黑色像素,你可以先反转(否定)图像,像这样

convert output.png -negate \( +clone -evaluate set 0 \) -metric AE -compare -format "%[distortion]" info:
93414

我仍然不明白你的问题,或者@Shai的答案有什么问题。就我所见,ImageMagick的解决方法与Shai建议的完全相同,因此我也不明白为什么您认为ImageMagick是错误的方法。也许你可以澄清你真正想要的是什么,这样我们就可以试着进一步帮助你

不管怎样,现在,我会用ImageMagick的方法

convert input.png -blur x5 -threshold 50%  output.png

如果要计算白色像素,我会克隆图像并将克隆中的所有像素设置为黑色,然后让ImageMagick以绝对值告诉我克隆和原始之间有多少像素不同,如下所示:

convert output.png \( +clone -evaluate set 0 \) -metric AE -compare -format "%[distortion]" info:
输出

89008
如果你想计算黑色像素,你可以先反转(否定)图像,像这样

convert output.png -negate \( +clone -evaluate set 0 \) -metric AE -compare -format "%[distortion]" info:
93414


你的问题很难理解。你展示了一张图片,但没有说你希望在其中找到什么。什么是100px-某物的面积?或者你的意思是100灰度级的亮度差?100px是100像素。寻找比这更大的区域,在那里区域差异。@Masi:这对你来说可能很明显,但对世界其他地方来说却不是。链接图片的分析结果应该是什么。我们是否应该发现有两个不同的区域,一个是亮的,一个是暗的(都大于100×100像素)?@jonas是的,这只是观察而已。不需要区分颜色。是的,两个不同的领域。因为对比可能不是最好的方法,所以我把问题简化了。只有“是/否”答案就足够了。只有这些图片。你的问题很难理解。你展示了一张图片,但没有说你希望在其中找到什么。什么是100px-某物的面积?或者你的意思是100灰度级的亮度差?100px是100像素。寻找比这更大的区域,在那里区域差异。@Masi:这对你来说可能很明显,但对世界其他地方来说却不是。链接图片的分析结果应该是什么。我们是否应该发现有两个不同的区域,一个是亮的,一个是暗的(都大于100×100像素)?@jonas是的,这只是观察而已。不需要区分颜色。是的,两个不同的领域。因为对比可能不是最好的方法,所以我把问题简化了。只有“是/否”答案就足够了。只有这些图片。如何确定不等式(f1>128)中常数(128)的正确值?该阈值在灰度中的最大变化量是多少?我想了很多。因此,算法首先应该找到正确的阈值。@Masi我认为阈值不会变化。如果我没弄错你的问题的话,你是在试图把一个黑暗的区域和一个明亮的区域分开,只是你有相当多的噪音。大的过滤器应该能处理噪音,让你做一个简单的决定。我开始比较你的答案和马克的答案。你的门槛百分比是多少?你的imfilter有任何模糊组件吗?拥有或不拥有模糊的好处是什么?@Masi my thershold与Mark的解决方案相同(与我的解决方案相同,仅使用ImageMagcik实现)
imfilter
是ImageMagick解决方案的模糊组件。你必须有一个模糊或过滤器来克服噪声。你如何确定不等式(f1>128)中常数(128)的正确值?该阈值在灰度中的最大变化量是多少?我想了很多。因此,算法首先应该找到正确的阈值。@Masi我认为阈值不会变化。如果我没弄错你的问题的话,你是在试图把一个黑暗的区域和一个明亮的区域分开,只是你有很多的空间