# Is Pixel Interpolation possible in MATLAB? If so, how?

5 views (last 30 days)
Ali Almakhmari on 30 Jul 2022
Answered: Image Analyst on 31 Jul 2022
Hey guys. So I have a picture, but unfortunately, some pixels in it are completely black (the RGB values are 0,0,0). For those specific pixels, I would like to do some sort of pixel interpolation (replace those black pixels by a pixel that is interpolated from the surrounding area). I tried doing it myself but I struggled with multiple things, one of them is how to tell MATLAB what are the pixels that I want to replace and what are the pixels that I want it to interpolate from. Any ideas?

DGM on 30 Jul 2022
You should be able to use regionfill()
% a test array with a zero pixel
A = uint8(randi([0 255],5,5));
A(3,3) = 0;
imshow(A) % create a mask that describes the zeros
mk = A == 0;
% inpaint
B = regionfill(A,mk);
imshow(B) ##### 2 CommentsShowHide 1 older comment
Image Analyst on 31 Jul 2022
Maybe regionfill try it on each channel one at a time
% Split RGB image apart into separate color channels.
[r,g,b] = imsplit(rgbImage);
% Fill holes in each channel individually.
r = regionfill(r, mask);
g = regionfill(g, mask);
b = regionfill(b, mask);
% Recombine
rgbImage = cat(3, r, g, b);
There are other ways (some are perhaps more "accurate"), but this might be the simplest and be good enough.

### More Answers (1)

Image Analyst on 31 Jul 2022
You might take a look at inpaintCoherent or inpaintExemplar.

R2020b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!