Hazy image equation implementation.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have an hazy image equation. When I am try to implement that equattion I only get a black image only.
![Screenshot (48).png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243658/Screenshot%20(48).png)
This is my equation. How can I implement this equation in matlab correctly.Please help me.
1 comentario
Respuestas (2)
Thiago Henrique Gomes Lobato
el 20 de Oct. de 2019
Editada: Thiago Henrique Gomes Lobato
el 20 de Oct. de 2019
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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243663/image.png)
If you have a RGB image, make sure to apply it individually to every third dimension of your image matrix.
4 comentarios
Thiago Henrique Gomes Lobato
el 25 de Oct. de 2019
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,[])
![Untitled.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/245051/Untitled.png)
Image Analyst
el 20 de Oct. de 2019
Chances are that your image is floating point and you forgot to put [] in imshow.
imshow(yourImage, []);
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!