The aim of occlusion culling is to cull away a significant amount of invisible primitives at different viewpoints. We present two algorithms to improve occlusion culling for a highly occluded virtual environment. The first algorithm is used in pre-processing stage. It considers the combined gain and cost of occluders to select an optimal set of occluders, called minimum occluder set, for each occludee. The second algorithm uses the improved opacity map and sparse depth map for efficient run-time overlap tests and depth tests, respectively. Without using pixel-wise comparison, this algorithm uses only three integer operations to perform an overlap test, and carry out a depth comparison sparsely. Both algorithms have been implemented and applied to test a model composed of about three hundred thousand polygons. Significant speedup in walkthroughs of the test model due to our algorithms has been observed.