Your program is equivalent to a full image dilation with the structure element of ones(8)
(btw, you didn't use the input argument [0 0 7 7], and you don't need that indeed):
I = [92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59];
Max_image = max_filter(I, [0 0 7 7])
will give you:
99 99 97 97 97 75 75 75 72 72
98 97 97 97 97 75 75 75 72 72
100 100 100 97 97 75 75 75 72 72
100 100 100 97 97 75 75 75 72 72
100 100 100 97 97 75 75 75 72 72
100 100 100 97 97 72 72 72 72 72
100 100 100 97 97 72 72 72 72 72
100 100 100 97 97 72 72 72 72 72
100 100 100 96 84 59 59 59 59 59
100 100 100 84 84 59 59 59 59 59
When you are using:
J1=imdilate(I,ones(8),'full');
J1(8:end,8:end)
It will give you exactly the same answer.
That's why I told you yesterday that it is often to use a binary image mask as the structure element. You don't need to choose the value inside the mask, but you need to choose the size (8*8) and shape. What is a shape? In a binary image, the elements that are filled with 1 determines the shape. Here in your code you selected the largest value within the 8*8 region, that is equivalent to the image dilation with a whole bright 8*8 square shaped mask.