簡體   English   中英

如何計算RGB圖像感興趣區域的熵?

[英]How can i calculate the entropy of the region of interest of an RGB image?

樣本圖片:

樣本圖片

我知道如何計算RGB圖像的熵。首先將圖像矢量化,最后將其用作entropy()函數的參數。

image_vector = double(original_RGB_image(:));

entropy_of_the_image = entropy(image_vector);

但是,我們應該怎么做才能計算圖像感興趣區域的熵呢?

我知道一種方法。以某種方式,將其轉換為黑白圖像(white = 1),並使用黑白圖像的逆作為原始RGB圖像的參數。我認為,背景顏色將是黑色。但是它不起作用。背景(周圍的環境)變成了藍色(類似的東西)而不是黑色? 我該怎么辦?
這是我的代碼...

a=imread('ISIC_0000001 w.jpg');
a=imresize(a,[300 300]);
mkr=a;
figure,
imshow(mkr);
im=rgb2gray(a);
level=graythresh(im);
a=im2bw(im,level);
figure,
imshow(a);
mkr(a)=nan;
figure,
imshow(mkr);

您走在正確的軌道上。

我認為,背景顏色將是黑色。但是它不起作用。背景(周圍的環境)變成了藍色(類似的東西)而不是黑色? 我該怎么辦?

首先檢查圖像矩陣中的實際數值。 如果它們實際上是0或nan那么您所看到的藍色很可能是色圖配置的結果(其中數字用作色表中顏色的參考)。

這里的另一個問題可能與您的圖像中具有三個通道(紅色,綠色,藍色),而您用作過濾層或邏輯索引矩陣的黑白圖像中只有一個通道不匹配有關。

假設您正在使用黑白圖像,那么在圖像的相應感興趣區域中獲得1的圖像,在其他位置獲得0的圖像,並且已將此變量命名為regionOfInterestImage 您可以使用邏輯索引來計算圖像的紅色,綠色和藍色通道的熵。 但是, regionOfInterestImage是NxM矩陣,而原始圖像是NxMx3矩陣(對於R,G,B為x3)。

假設您已經計算出1和0的矩陣,其中1與您感興趣的區域相對應,並在您的代碼regionOfInterestImage其稱為regionOfInterestImage

作為使用MATLAB提供的圖像的示例:

rgbImg = imread('ngc6543a.jpg');

%create a filter layer based on primarily blue pixels:
regionOfInterest = rgbImg(:,:,2)>100 & rgbImg(:,:,1)<100 & rgbImg(:,:,3)<100;

現在,為每個通道重復此感興趣區域圖層,以便可以使用它來訪問要計算其熵的原始圖像中的像素值。

entropy_of_the_image_region = entropy(rgbImg(repmat(regionOfInterest,1,1,3)));

我在這里使用repmat在每個通道上重復regionOfInterest層。 然后將所得的NxMx3矩陣索引到原始RGB圖像( rgbImg )中,並獲取相應的通道值作為矢量,以進行entropy處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM