Trouble Removing Uneven Background Lighting from Image
19 views (last 30 days)
Show older comments
Hello,
As I stated I am having some trouble removing a background from an image. I have tried using imopen, imtophat, and a couple other methods, but all of them result in the same problem. The code considers my entire image as a background. For example, here is my original image.
My code to load it is pretty simple
drop=mat2gray(imread('st000.tif'));
As you can see the illumination is fairly uneven, and when I go to convert it to a bw image it cuts off the last half of the stream. When I try and use imopen to find the background this is what I get.
background = imopen(drop,strel('disk',15));
figure()
imshow(background)
If I use imtophat I get this.
I2 = imtophat(drop,strel('disk',15));
figure()
imshow(I2)
Since this image is a little dark, I tried to enhance it using
I3=imadjust(I2);
figure()
imshow(I3)
which gave me
I can't really use this image, since it is so blurry. I have tried taking a static image with the background, subtracting that from the bw image of the original, and that sort of works.
But as you can see it removed a lot of the resolution on the image, which I think has something to do with how I actually convert it into a bw image. I think I can get a better resolution if I can find a way to make a uniform background before converting it to bw.
0 Comments
Accepted Answer
Jeff E
on 20 May 2015
Try using imbothat instead of imtophat, with a slightly larger kernel size.
I2= imbothat(drop, strel('disk', 30));
worked for me, with the exception of some artifacts around the edge.
3 Comments
Jeff E
on 21 May 2015
Use a bigger kernel size. Say, 45 or so. The artifacts around the edges will be bigger, but you'll capture the larger droplets much more effectively.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!