i have a problem with the intersection of binary images.
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
charuleelaa vanilavarasu
am 14 Mär. 2016
Bearbeitet: charuleelaa vanilavarasu
am 14 Mär. 2016
I'm trying to implement the attached paper. But the output i'm getting after intersection is just a black image. I don't know what i'm doing wrong.Am i doing only the intersection wrong or everything else too?!can someone please help? here is the code:
A=imread('image\4.jpg');
figure,imshow(A);title('RGB Image');
%Represent the RGB image in [0 1] range
I=double(A)/255;
R=I(:,:,1); G=I(:,:,2); B=I(:,:,3);
%Hue
numi=1/2*((R-G)+(R-B));
denom=((R-G).^2+((R-B).*(G-B))).^0.5;
%To avoid divide by zero exception add a small number in the denominator
H=acosd(numi./(denom+0.000001));
%If B>G then H= 360-Theta
H(B>G)=360-H(B>G);
%Normalize to the range [0 1]
H=H/360;
%Saturation
S=1- (3./(sum(I,3)+0.000001)).*min(I,[],3);
%Intensity
I=sum(I,3)./3;
%HSI
HSI=zeros(size(A));
HSI(:,:,1)=H;
HSI(:,:,2)=S;
HSI(:,:,3)=I;
figure,imshow(HSI);title('HSI Image');
figure,imshow(H);title('hue component');
mis=I-S;
figure,imshow(mis);title('intensity-saturation');
red = A(:,:,1); % Red channel
green = A(:,:,2); % Green channel
blue = A(:,:,3); % Blue channel
a = zeros(size(A, 1), size(A, 2));
just_red = cat(3, red, a, a);
just_green = cat(3, a, green, a);
just_blue = cat(3, a, a, blue);
back_to_original_img = cat(3, red, green, blue);
figure, imshow(A), title('Original image')
%figure, imshow(just_red), title('Red channel')
%figure, imshow(just_green), title('Green channel')
figure, imshow(just_blue), title('Blue channel')
figure, imshow(back_to_original_img), title('Back to original image')
mgb=just_green - just_blue;
figure,imshow(mgb);title('green-blue');
l1 = graythresh(H);
B1 = im2bw(H,l1);
figure,imshow(B1);title('b1');
l2 = graythresh(just_blue);
B2 = im2bw(just_blue,l2);
figure,imshow(B2);title('b2');
l3 = graythresh(mis);
B3 = im2bw(mis,l3);
figure,imshow(B3);title('b3');
l4 = graythresh(mgb);
B4 = im2bw(mgb,l4);
figure,imshow(B4);title('b4');
Int1 = B1 & B2;
Int2 =B3 & B4;
Int3 =Int1 & Int2;
figure,imshow(Int3);title('result');
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!