Matlab 如何从图像的感兴趣区域(不包括黑色背景)提取特征?

Matlab 如何从图像的感兴趣区域(不包括黑色背景)提取特征?,matlab,image-processing,background,feature-extraction,roi,Matlab,Image Processing,Background,Feature Extraction,Roi,我滚动浏览了同一问题的一些答案,得到了以下结果 C = num2cell(YourImage); C(~YourImage) = {{}}; 这应该给出一个单元格数组,其中背景所在的位置有空单元格(“无”),前景所在的位置有包含空单元格的单元格。以及 imagesc(YourImage, 'AlphaData', YourImage) colormap(gray) set(gca, 'color', 'none') 为了将感兴趣的区域设置为可见,我自己尝试过,但没有得到结果,我做错了什么,以

我滚动浏览了同一问题的一些答案,得到了以下结果

C = num2cell(YourImage);
C(~YourImage) = {{}};
这应该给出一个单元格数组,其中背景所在的位置有空单元格(“无”),前景所在的位置有包含空单元格的单元格。以及

imagesc(YourImage, 'AlphaData', YourImage)
colormap(gray)
set(gca, 'color', 'none')
为了将感兴趣的区域设置为可见,我自己尝试过,但没有得到结果,我做错了什么,以及使用此代码的正确方法

具有黑色背景的图像示例:


以下代码片段从红色通道中提取背景去除后的平均值:

>> I = imread('https://i.stack.imgur.com/mI75C.png');
>> mask = rgb2gray(I) > 0;
>> red = I(:, :, 1);
>> red_avg = mean(red(:))

red_avg =

   48.0807

>> red_avg_br = mean(red(mask))

red_avg_br =

  192.3833

此代码无法运行或无法再现您正在查找的“错误”。“没有得到结果”到底意味着什么?到底是什么错误?您是否试图将图像转换为单个单元格,每个单元格都是一个像素,然后无论哪里有黑色像素,您都希望将其显示为空单元格,而不是像素值?如果你有彩色图像会发生什么?是希望每个单元格都是RGB值的数组,还是希望三维单元格数组?请更清楚地说明您想要实现的目标。我正试图严格地从RGB中的病变区域提取特征,我不希望特征提取将黑色像素考虑在内,例如,如果我输入此图像并从红色灰度中提取平均值,我将收到错误的读数,因为黑色像素会影响它,我需要提取的特征是平均值、标准偏差、方差、偏斜、峰度、颜色熵。至少有4个纹理的使用了graycoprops GLCM。你还没有回答我所有的问题。请重新阅读我的要求,然后再试一次。我想让它做的是在黑色单元格存在的地方创建空白单元格,只考虑每个颜色通道的值在1到255之间的单元格,而没有得到结果的意思是,当我尝试imshow(c)时,我收到一个错误消息试图将其转换为uint8,它不起作用,其余的代码也无法成功运行..现在我想你对我试图解决的问题有一个很好的想法,只要我能成功地从病变区域提取特征,就不需要使用这种方法。