How to store the difference between adjacent pixel values of image

2 views (last 30 days)
I have a black and white image and I need to store the value of the differences between each adjacent pixel so that i may plot the values in a histogram.
  3 Comments
layth ibrahim
layth ibrahim on 11 Apr 2022
Starting from pixel (1,1) after that the difference with the pixel before its position. Sorry, I should have said its grayscale.
layth ibrahim
layth ibrahim on 15 Apr 2022
Was recently told I need to use a nested "for" loop to acomplish the task.

Sign in to comment.

Answers (2)

Benjamin Thompson
Benjamin Thompson on 11 Apr 2022
Edited: Benjamin Thompson on 11 Apr 2022
Use imfilter with a 1D filter argument. If your h is vertical then the difference operation is in the vertical direction. If the filter coefficients h are horizontal then the difference operation is horizontal.
>> imshow(phantom)
>> imshow(imfilter(phantom, [-1 1]))
>> imshow(imfilter(phantom, [-1 1]'))

DGM
DGM on 11 Apr 2022
If all you want is the difference in one direction, then just use diff().
A = randi([0 255],10);
dAdx = diff(A,1,2);
histogram(dAdx(:))

Community Treasure Hunt

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

Start Hunting!