我试图用两张图片减去图像的背景。
图片int binary_exec(void * Address){
int i;
__disable_irq();
// Disable IRQs
for (i = 0; i < 8; i ++) NVIC->ICER[i] = 0xFFFFFFFF;
// Clear pending IRQs
for (i = 0; i < 8; i ++) NVIC->ICPR[i] = 0xFFFFFFFF;
// -- Modify vector table location
// Barriars
__DSB();
__ISB();
// Change the vector table
SCB->VTOR = ((uint32_t)0x4000 & 0x1ffff80);
// Barriars
__DSB();
__ISB();
__enable_irq();
// -- Load Stack & PC
binExec(Address);
return 0;
}
__asm void binexec(uint32_t *address)
{
mov r1, r0
ldr r0, [r1, #4]
ldr sp, [r1]
blx r0"
是背景,图片A
是背景图片。
我正在规范图像,但我没有得到预期的结果。 这是代码:
B
生成的图像是完全黑暗的图像。感谢用户saeed masoomi的回答,我意识到这是因为数据类型,所以现在,我有以下代码:
a = rgb2gray(im);
b = rgb2gray(im2);
resA = ((a - min(a(:)))./(max(a(:))-min(a(:))));
resB = ((b - min(b(:)))./(max(b(:))-min(b(:))));
resAbs = abs(resB-resA);
imshow(resAbs);
生成的图片没有得到很好的过滤,图片a = rgb2gray(im);
b = rgb2gray(im2);
resA = im2double(a);
resB = im2double(b);
resAbs = imsubtract(resB,resA);
imshow(resAbs,[]);
的某些部分没有出现但应该出现。
如果我在没有规范化的情况下尝试这样做,我仍然会遇到同样的问题。
图片B
和A
之间的唯一区别是仅显示在图片B
中的手臂,因此它们应该没有任何切割。
答案 0 :(得分:0)
您好请注意您的数据类型 ... matlab中的图像保存在unsigned char(或int)中(8位0到255并且没有0.1或0.2或任何浮点数所以,如果你有1.2输出将是1)。
uint8数据中的计算错误,如下所示
max=uint8(255); %uint8
min=uint8(20); %uint8
data=uint8(40); %uint8
normalized=(data-min)/(max-min) %uint8
输出
normalized =
uint8
0
ooops,您可能认为此输出将为0.0851但不是因为数据类型为uint8且输出为0 ...所以我猜您的所有数据都为零(结果图像很暗 )...为了防止这个错误,MATLAB有一个名为 im2double 的便捷功能(将uint8转换为double,所有数据在0和1之间归一化)
I2 = im2double(I)将强度图像I转换为双精度,必要时重新调整数据。我可以是灰度强度图像,真彩色图像或二值图像。
所以我们可以像下面那样重写你的代码
a = rgb2gray(im);
b = rgb2gray(im2);
resA = im2double(a);
resB = im2double(b);
resAbs = abs(imsubtract(a,b)); %edited
imshow(resAbs,[])
<强>编辑强>
因此,如果输出图像再次变暗,则必须通过以下代码检查两个图像是否具有不同的像素!!
if(isempty(nonzeros))
disp('Two image is diffrent -> normal')
else
disp('Two image is same -> something wrong')
end
答案 1 :(得分:0)
不要将两张图像标准化。背景减法通常使用相同的相机设置完成,因此两个图像可直接比较。如果背景图像中没有明亮的物体,那么像你那样进行标准化会使它变得明亮起来。第二张图片。强度不再具有可比性,你可以看到没有的差异。
如果您使用不同的相机设置(不同的曝光时间,照明等)记录背景图像,那么背景减法比您想象的要复杂得多。您必须应用优化方案才能使两个图像具有可比性,以使它们的差异很小。你必须仔细研究文献,但这并不是一件轻而易举的事。