Try asking in person or over the phone. It's easy to say "no" to an email. More difficult over the phone. Pretty darn hard if the person visits in person and makes a good impression.
Also, try visiting your optometrist that you normally go to. Saying, "Hi, I've been a patient for 3 years, and have always felt that you were a great optometrist. Could I shadow you for a bit?"
Then, when you visit, go to lunch with the optometrist. (I usually pay for it as a nice gesture.) Although you'll ask questions about optometry, try to get to know the person personally. At the end, say, "Wow, I really learned a lot through this visit, but I'm curious to see how other offices are different/similar. Do you know of any other optometrists who might allow me to shadow them?" If they like you, they might refer you to their friends.
Also, ask your friends/family who their optometrists are. Then, call them and say, "Hi, my roommate Colin told me that you've been his optometrist for 2 years and he's always been impressed by your work. Could I shadow you for a few hours?"
This is how I was able to shadow 5 different optometrists.
Oh, and don't forget to send a hand written thank you note shortly after your visit. It's the polite thing to do and will help you if you ever want to visit again or do anything more with the optometrist.