Если честно, то не понимаю, зачем объявлять переменные ``g`` и ``r`` типа ``int``, если все равно проверяется, что нигде не произошел выход за границы, а потом и вовсе стоит преобразование к ``uchar``.