there are different approaches to this problem:
an easy way would be to make your own "collision rectangles" for each frame of your sprite and then check for all that rectangles, if they collide with any of the other sprite's collision rectangles.
in your graphic f.e. you can make one big rect for the whole right side of the yellow sprite, one medium rect for the left "halfisle" and another small rect for the tiny little halfisle on the left bottom corner.
another way would be to check the non-transparent pixels of the sprites and if there are overlapping pixels, there is a collision. to optimize this second approach you can save the indizes of the transparent pixels to avoid checking pixel per pixel.
if you have f.e. a 8x8 pixel sprite and pixel 1 to 27 are transparent, you store this information in your spriteclass or whatever. if you now check for a pixelcollision you start at pixel 1. you now know that the next 26 pixels are transparent so you can directly jump to pixel 28, etc..
but to keep it simple i would recommend the first approach.