I realized that my problem was that many Bitmap object were created through the process. I invoked the GC.Collect method but this was causing a performance impact. Then I start looking for a solution to release by my self those Bitmap. Bitmap are created in the managed heap which is not intended to be accessed directly by the user (coder), so, the solution I found was not elegant but solved my problem with no performance impact. I created a separated program that creates the Bitmaps and is called by the main program by using the Process class. When this separated program starts it does its work and then when is closed its occupied memory is released avoiding the OutOfMemoryException.
If you have any suggestion or any other solution I will appreciate your response.