Hazy image equation implementation.
1 次查看(过去 30 天)
显示 更早的评论
I have an hazy image equation. When I am try to implement that equattion I only get a black image only.
This is my equation. How can I implement this equation in matlab correctly.Please help me.
回答(2 个)
Thiago Henrique Gomes Lobato
2019-10-20
编辑:Thiago Henrique Gomes Lobato
2019-10-20
Can it be possible that you are just making a wrong conversion of your image data? With the code below I show an example of what would be a right and wrong conversion, besides this the code seems to work :
rng default
% Image and parameters
I = imread('cameraman.tif');
A = 0.5;
t = randn(size(I)); % t must have same dimensions as I
t = abs(t)/max(abs(t(:)))*0.7+0.3; % Normalize so no division by zero value possible
Hazy = @(I,A,t) (I-A*(1-t))./t; % Define your function, make sure it is element-wise
% Wrong Image conversion
J1 = Hazy(double(I),A,t);
% Right image conversion
J2 = Hazy(im2double(I),A,t);
figure,
subplot(1,3,1)
imshow(J1)
subplot(1,3,2)
imshow(I)
subplot(1,3,3)
imshow(J2)
If you have a RGB image, make sure to apply it individually to every third dimension of your image matrix.
4 个评论
Thiago Henrique Gomes Lobato
2019-10-25
The problem was that you was defining your filter as a function of the image values before converting to normalize doubles, so your t had some crazy negative values and produced the black image. The following code works:
clc
clear
rng default
% Image and parameters
M= imread('5.3.02.tiff');
I=im2double(M);
tot = sum(double(I(:)));
[K L] = size(I);
A=((1./(K*L))*tot);
SD=std2(I);
t1= (I./A);
t2= SD * t1;
t= 1-t2;
Hazy = @(I,A,t) (I-A*(1-t))./t; % Define your function, make sure it is element-wise
J1 = Hazy(I,A,t);
figure,
subplot(1,2,1)
imshow(J1,[])
subplot(1,2,2)
imshow(I,[])
Image Analyst
2019-10-20
Chances are that your image is floating point and you forgot to put [] in imshow.
imshow(yourImage, []);
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!