How to load/use an 2D image?

I have struggled to find a simple example which shows how to load an image using Image2D and use it in the kernel.
E.g. say i have an image which is made of an unsigned char*, how would i use Image2D to load this?
Than how would i use this image in the kernel?
I have seen something like this:

__kernel void(image2d_t image){

}

But how would i get each image pixel and modify it?

You can read everything about Images here: https://subscription.packtpub.com/book/application_development/9781849692342/9

Sorry, basic image usage is here: https://subscription.packtpub.com/book/application_development/9781849692342/4