How to feature extract from an image with black background(without taking the black background in consideration)?

1 回表示 (過去 30 日間)
I was scrolling through some answers of the same issue and got the following
C = num2cell(YourImage);
C(~YourImage) = {{}};
This will give you a cell array in which there are empty cells ("nothing") where the background was, and cells containing [1] where the foreground was.And
imagesc(YourImage, 'AlphaData', YourImage)
colormap(gray)
set(gca, 'color', 'none')
to set the Region of interest visible,i did try it myself and didn't get a result,What am i doing wrong and the correct way to use this code.

採用された回答

Image Analyst
Image Analyst 2017 年 6 月 16 日
Looks weird. Very, very weird. I'd say what you're doing wrong is using cells in the first place. I don't see any reason for that. Why put each pixel into a cell? And then make the cells empty where the image is zero? And it's not going to put a 1 in cells with foreground. It's going to have the original gray levels in the cells. I mean, you could simply do the same thing that you say you want (0=background of 0, and 1 = foreground of non-zero) much better and with far, far less memory usage simply by saying
C = (YourImage ~= 0).
Post your image and say what feature in it that you're trying to measure.
  9 件のコメント
Elias Unk
Elias Unk 2017 年 6 月 17 日
I did try the code again to make sure i didn't make any wrong step and for the following code
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
mask = ~(redChannel == 0 & greenChannel == 0 & blueChannel == 0);
I ended up with the same result,doesn't make sense to me either but try it out yourself.
Image Analyst
Image Analyst 2017 年 6 月 17 日
The two binary images you posted don't look anything like the masked RGB images you posted. The only way my code would look like the larger bottom binary image you posted is if your image is heavily corrupted with JPG artifacts. In that case you may have to check not for exact zero, but some small value, like 9 or something;
mask = ~(redChannel <= 9 & greenChannel <= 9 & blueChannel <= 9);

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGeometric Transformation and Image Registration についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by