correcting x-ray image
显示 更早的评论
hello... i have the following code to correct the contrast of x-ray image,, but at last it gives a black image not x-ray,, Can any body help ???
load('heel_effect.mat')
imread('Hand.png')
subplot 231
imshow('Hand.png')
title('Origin')
tissue=tissue_eq_slab_image ;
h=x_ray_HeelEffect_image;
subplot 232
imagesc(tissue); colormap gray
title('Tissue Slab')
subplot 233
imagesc(h); colormap gray
title('Heel effect')
[M,N]=size(tissue);
mid_line=tissue(M/2,:);
subplot 234
imshow(mid_line)
title('Mid Line')
[m,n]=size(mid_line);
for c=1:n
T(c)=mid_line(:,c);
end
subplot 235
plot(1:n,T)
title('Relation')
log_T=log (double(T+eps));
log_c=log(double((1:n)+eps));
% I=A*x^Gama
%Ln I=Ln A+ Gama Ln x
z=polyfit (log_c, log_T,1);
Gama=z(1,1); %slope= Gama
A=exp(z(1,2)); %constant=Ln A
[m1,n1]=size(h);
for i=1:n1
corrected(:,n1)=tissue(:,n1)/A*(n1.^Gama);
end
subplot 236
imagesc(corrected)
title('Corrected Image')
11 个评论
Christine Ak
2013-10-12
sixwwwwww
2013-10-12
Dear Christine, "heel_effect.mat" is not attached yet and also can you please explain what is meaning of these lines of your code?
tissue=tissue_eq_slab_image;
h=x_ray_HeelEffect_image;
because variables "tissue_eq_slab_image" and "x_ray_HeelEffect_image" are not defined anywhere. So I assume that you mean as follows
tissue_eq_slab_image = imread('Hand.png')
x_ray_HeelEffect_image = load('heel_effect.mat')
Is it correct?
Christine Ak
2013-10-12
sixwwwwww
2013-10-12
what is size of your ".mat" file?
Image Analyst
2013-10-12
We can't really run your code unless you attach the mat file - you have to zip it up for now (until Answers gets that issue fixed). Have you actually observed values of corrected in the variable editor and verified that all values are exactly zero? Or does it just look black when you display it?
Christine Ak
2013-10-12
编辑:Christine Ak
2013-10-12
Image Analyst
2013-10-12
Nothing is attached.
Christine Ak
2013-10-12
Image Analyst
2013-10-12
zip up the mat file and click the paper clip icon when you make a comment!!
Wesam Mohamed
2020-6-9
Is this the full answer with run ?!
回答(1 个)
Youssef Khmou
2013-10-12
You can use the histogram equalization , see this example :
I = imread('tire.tif');
J = histeq(I);
imshow(I)
figure, imshow(J)
see
doc histeq
6 个评论
Christine Ak
2013-10-12
Youssef Khmou
2013-10-12
编辑:Youssef Khmou
2013-10-12
Apply hiseq for each channel : example :
I=im2double(imread('autumn.tif'));
X=zeros(size(I));
for n=1:3
X(:,:,n)=histeq(I(:,:,n));
end
Image Analyst
2013-10-13
No offense, but do you like what histeq does? I find it gives unrealistic and unnatural looking images. Even a primitive contrast stretch like imadjust() will give more pleasing images than histeq(). I think histeq is just in there for instructional purposes but I doubt anyone in real world situations considers it a good thing to do. A gamma like she tried will probably look okay but that just adjusts intensity. Some of the better filters do that plus do spatial frequency enhancements to see details better.
Youssef Khmou
2013-10-13
I agree, but it may work for X ray images, waiting for her answer..
Christine Ak
2013-10-13
Christine Ak
2013-10-13
类别
在 帮助中心 和 File Exchange 中查找有关 White 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!