Histogram from masked area of grayscale picture
3 次查看(过去 30 天)
显示 更早的评论
Hello!
I want to make a histogram from masked area of a grayscale picture. I've tried this:
maskedImage = bsxfun(@times, grayImage, cast(mask, 'like', grayImage));
histogram(maskedImage(mask), 256, 'EdgeColor', 'none')
But it keeps saying: "Array indices must be positive integers or logical values". There are no negative integers and the mask only contains 0 and 1.
Hope you can help! :-)
0 个评论
采纳的回答
Steven Lord
2019-6-18
编辑:Steven Lord
2019-6-18
When performing indexing, there is a difference between a logical array and a double array containing only 0 and 1. The former works and performs logical indexing, the latter does not work and throws an error because there's no such thing as element 0, row 0, column 0, page 0, etc. of an array in MATLAB.
x = 1:10
L = mod(x, 2) == 0
D = double(L)
onlyEvens1 = x(L) % Works
onlyEvens2 = x(D) % Errors
If mask is a double array containing just 0's and 1's you'll need to convert it into a logical array to use it for indexing. The easiest way to do this is to call the logical function on it.
L2 = logical(D)
isequal(L, L2) % True
onlyEvens3 = x(L2)
0 个评论
更多回答(2 个)
Image Analyst
2019-6-18
Attach a .mat file containing your grayImage and mask.
Alternatively, just do
histogram(grayImage(mask), 256, 'EdgeColor', 'none')
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!