我怎么能计算局部二进制模式图像的特征向量?

3视图(30天)
我发现的演示代码发布的@Image分析师。当地二进制模式图像计算出整个图像。但我想计算感兴趣的地区。根据维基百科…LBP特征向量,在其最简单的形式,创建以下列方式:
1)检查窗口划分为细胞(例如16 x16像素每个单元用作)。
2)对于每一个像素在一个单元中,比较像素的8邻国(left-bottom工具条,左中,右上角,等等)。按照像素沿着圆,即顺时针或逆时针。中心像素值大于邻居的价值,写“0”。否则,写“1”。这给了一个8位二进制数(通常转换为十进制为了方便)。
3)计算直方图的细胞,每个“数量”发生的频率(即。,每个组合的像素更小,比中心)。这个柱状图可以被视为一个256维的特征向量。
4)选择正常化直方图。
5)连接(规范化)直方图的细胞。这给整个窗口的特征向量。
但根据给定的代码并不分裂细胞的窗口。计算枸杞多糖对整个图像。这意味着它跳过1,3,4,5的选项。我能怎么做?如何做我感兴趣的地区?
如果真正的
[pixelCount灰度]= imhist (grayImage);
次要情节(2,2,2);
酒吧(pixelCount);
标题(原始图像的直方图,“字形大小”、字形大小);
xlim([0灰度(结束)]);% x轴手动。
% Preallocate /实例化数组为本地二进制模式。
localBinaryPatternImage = 0(大小(grayImage));
行= 2:行- 1
坳= 2:列- 1
centerPixel = grayImage(行,坳);
col-1 pixel7 = grayImage(第1行)> centerPixel;
坳pixel6 = grayImage(第1行)> centerPixel;
pixel5 = grayImage(第1行,坳+ 1)> centerPixel;
pixel4 = grayImage(行,坳+ 1)> centerPixel;
pixel3 = grayImage(行+ 1,+ 1)上校> centerPixel;
pixel2 = grayImage(+ 1行,坳)> centerPixel;
pixel1 = grayImage(行+ 1,col-1) > centerPixel;
col-1 pixel0 = grayImage(行)> centerPixel;
localBinaryPatternImage(行,坳)= uint8 (
pixel7 * 2 ^ 7 + pixel6 * 2 ^ 6 +
pixel5 * 2 ^ 5 + pixel4 * 2 ^ 4 +
pixel3 * 2 ^ 3 + pixel2 * 2 ^ 2 +
pixel1 * 2 + pixel0);
结束
结束
次要情节(2、2、3);
imshow (localBinaryPatternImage []);
标题(“本地二进制模式”,“字形大小”、字形大小);
次要情节(2、2、4);
[pixelCounts, gl] = imhist (uint8 (localBinaryPatternImage));
栏(gl, pixelCounts);
标题(局部二元模式的直方图,“字形大小”、字形大小);
结束

答案(1)

图像分析
图像分析 2017年8月17日
我认为没有必要步骤1和步骤5。他们做什么好?如果你把一堆的直方图16 x16窗户然后把所有柱状图,你会得到整个图像的直方图一样,所以我不知道步骤1和5甚至需要,或者如果他们实现最终的结果会有什么不同,做“细胞”在同一时间(即忽略细胞)。也许你可以向我解释它如何使一个差异。
如果你想获得一组感兴趣的不规则区域的枸杞多糖面具外的像素为1或南。当你扫描8像素的邻居,如果你遇到一个1或南像素邻居,直接跳过,像素不计算该像素的枸杞多糖。
8的评论

登录置评。

社区寻宝

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

开始狩猎!