Image 如何使用MATLAB图像处理计算锥形喷雾图像(2D)一半长度处的面积?

Image 如何使用MATLAB图像处理计算锥形喷雾图像(2D)一半长度处的面积?,image,matlab,image-processing,Image,Matlab,Image Processing,我有一张燃油喷射的图像,我想找到燃油喷射的角度。我读过的一篇研究论文告诉我,我可以通过喷雾一半长度的面积来找到角度,我已经试着找到喷雾一半长度的面积了好几个星期了 下面的代码显示了我的尝试。我也尝试过其他的方法,比如剔除所有非零元素,只计算从喷雾末端开始的角度。因为这给了我一个不准确的答案,我在这里寻求帮助 img_subt_binary= imbinarize(img_subt); BW2= BiggestImageOnly(img_subt_binary);% Clear o

我有一张燃油喷射的图像,我想找到燃油喷射的角度。我读过的一篇研究论文告诉我,我可以通过喷雾一半长度的面积来找到角度,我已经试着找到喷雾一半长度的面积了好几个星期了

下面的代码显示了我的尝试。我也尝试过其他的方法,比如剔除所有非零元素,只计算从喷雾末端开始的角度。因为这给了我一个不准确的答案,我在这里寻求帮助

    img_subt_binary= imbinarize(img_subt);
    BW2= BiggestImageOnly(img_subt_binary);% Clear out all white areas that have less than 175 pixels. 
    % figure(2),imshow(BW2),
    % title('Filtered Binary Image')
    % [pixelCount, grayLevels] = imhist(BW2);
    % figure(3)
    % bar(grayLevels, pixelCount);
    [the_length,the_width]=size(BW2)
    %% Spray Angle 
    half_length=the_length/2;
    for j=1:half_length
        j=j+1;
        [LL(j),WW(j)]= size(BW2);
        final_width=max(WW);
    end
    angle= atan(final_width/half_length)
我预计喷雾角度在20度左右


要更好地估计宽度(喷射角度)的变化,您可能需要在整个图像上拟合一条线

[h w] = size(BW2);
margin = ceil(h/10);  % ignore top/bottom parts
row_width = sum(BW2(margin:end-margin,:), 2);  % number of white pixel in each row
x = 1:numel(row_width);
pp = polyfit(x, row_width.', 1);  % fit a line

% see the line
figure; 
plot(row_width); 
hold all;
plot(x, x*pp(1) + pp(2));

% get the angle (in degrees)
angle = atan(pp(1)) * 180 / pi 
估计角度为

情节:

什么是
[测试图像][1]
做的?我认为这不是有效的MATLAB语法。我也不明白为什么你反复做
size(BW2)
BW2
在你的循环中不会改变,所以它的大小也不会改变
WW
将填充图像的宽度,因此
final_width
也将是图像的宽度。我认为那对你没用。
7.1081