On the first day I met another CRA student, Deborah Thomas , who will also be working at BU for the summer. She is a computer science major at Bethel College in Minnesota. We are both working for Professor Margrit Betke . Professor Betke belongs to the Image and Video Computing Group here at BU. Both Deborah and I will be working on projects related to medical imaging.
Deborah and I spent the first few days running around trying to get ID cards and computer accounts. Since I go to a pretty small school, Colby College , the computer accounts are pretty simple. Here, however, we had to go to quite a few different places just to get access to the computers and the lab that we will be using for the summer.
After I got all the accounts I needed I sat down and started reading about the projects I'll be helping out with. For the most part I will be helping out Bill Mullally so I read a bunch of his papers as well as ones that he has been using in his research. I also read a few papers about the research of another graduate student member of the vision group here, Harry Hong . Both Harry and Bill work mostly with CT scans of lungs.Back to top
I spent the beginning of this week doing a bit more reading and getting used to the project. I had come to the lab the week before my official start date to meet Professor Betke because she had to go to a conference during my first week. She came back this week and Deborah, Harry, Bill, and I met with her to discuss what we would all be working on. The first thing I had to do was learn the software that they have been using. Another member of the vision group here wrote some software with a nice user interface to analyze the CT scans. I spent the rest of the week learning/using the software to segment the lungs in the CT scans. In a few different scans I used the software to identify the trachea, left lung, and right lung. Bill needed the data set that this generated to run some more experiments of his own. It was a bit frustrating at first because the software is still being developed so there are still a few bugs in it. After crashing it a few times I quickly learned which buttons to stay away from :-).A little bit of fun:
This week I started coding. Bill gave me a bunch of his code that so I could begin to understand what it does. One of the things that would be helpful to his research is an algorithm to find the convex hull of a bunch of points. Bill is working on segmenting nodules in the lungs. In order to do this he looks at slices of the scan at different threshold levels. The threshold is based on a contrast between light and dark. The light usually meaning there is some sort of object present and the dark just being empty space in the lung. At some thresholds the nodules break down into multiple nodules. Sometimes these nodules actually are two different nodules but often times they really make up only one. Choosing a threshold to correctly identify which case is correct is difficult. One of the things that I will be doing is writing an algorithm to take a set of nodules that should make up a single nodule and find the convex hull. This hull will then represent the single nodule.
At first I thought that this algorithm was only going to deal with two dimensions. I was looking through a few books and there were plenty of algorithms that seemed relatively easy to implement in two dimensions. I then learned that we were dealing with a 3D problem. Not having much experience with geometry and three dimensions, I was having trouble generalizing the 2D algorithms to three dimensions. Luckily one of the students remembered a 3D algorithm that they had seen in their Computational Geometry class and let me borrow their book. The algorithm in the book was an incremental algorithm that started adding points to the convex hull once an original tetrahedron was formed.
So far I have only implemented the first step of the algorithm which is to find a tetrahedron that is used as the starting point in finding the convex hull. Most of my programming experience is in Java and they code in C here so I spent some time getting used to the different language. I used C in a few classes at school so I had the basic idea but having not used C in over a year I had forgotten all the rules about pointers. Now that I feel more comfortable in C hopefully coding will go a bit faster. Next I have to work on figuring out the data structures that this algorithm uses.
Today I was still trying to figure out some of the ideas behind the convex hull algorithm given in a book I had. I was having some trouble following the algorithm so I decided to look around and see if I could find anything to help me understand it better. While I was looking, I found some existing code to compute the convex hull. I actually found a few different versions of it and I think we'll end up using one of them instead of writing it ourselves.
It was a pretty rainy weekend around here but still good. I didn't do much - quite a bit of TV watching. Between some of the showers a few of my friends and I decided to try and get out. My small town doesn't provide many things to do. The center of town is made up of three buildings. A library that resides in an old house on one side of the street and two other house like buildings across the street. One of the buildings is the community center but I have no idea what they do there. The other one functions as a postoffice, bank, general store, sandwich counter, pizza shop, and a real estate office. So as you can see there isn't much in my town. Sometimes we have to be a little creative in coming up with things to do. We ended up at the playground this time. I don't remember the last time I was on a swing. They're definitely my favorite part of playgrounds though. After we got tired of swinging, we walked off onto some trail in the woods. We found a small pond with a little island in it and decided that we were going to get to it. The island was only about 10 ft away from the edge of the pond but I almost fell in. Walking across a log when it's wet isn't all that easy :). The whole day made me feel like I was about 10 again. I wonder what we'll come up with to do next weekend.Back to top
This week we've switched gears because both Bill and Harry have conference papers due soon. In order to get some results Bill needed a function to read in data from a text file. I spent most of the week tackling that. It should have been a relatively simple thing to do but I overlooked an important part of the file's format which set me back quite a bit. While trying to write this code I also realized that I didn't know as much about C as I had thought. I spent a long time debugging things. Most of the problems I had were related to pointers and memory allocation. It took me a while to figure out how to pass the pointers to functions and have them change when I wanted them to and not change when I didn't want them too. At one point I ended up trashing what I had written and starting over. After a few hours of work on the new version I managed to hit the power button on my computer with my foot. Since I hadn't learned my lesson from the previous times times silly things like that had happened and I lost my work, I ended up starting over once again. Luckily, the third time was a charm because I was beginning to question whether a change in my major was going to be in order:-). I did learn quite a bit so all in all it was a good experience. The rest of the time I had this week I spent updating my web page. I've learned quite a bit from this too because I've never made one before. It's not very interesting at this point but I'm having a lot of fun working on it. Hopefully it'll be nice by the end of the summer. Four weeks done already - it's going by pretty quickly!A little bit of fun:
I spent all of my Saturday fixing the code I had been writing during the week so a good chunk of my weekend was gone. On Friday my neighbor had invited me over for dinner and I went because there was no way I was refusing a home cooked meal. My dad and I don't cook too much. By the time we both get home from work we never do any better than stuff you can make on the grill. It's not bad but variety is nice sometimes and my neighbor is a great cook. After dinner she had me help her make some cookies. After going home I spent a little time trying to get some coding done but realized I would be more productive if I just went to bed and got up early in the morning.
I was going to spend my Sunday doing laundry and cleaning but I decided it would be no fun, especially since I didn't have much other free time earlier in the weekend. Instead I went to visit my aunt and uncle. They had a pool put in last summer so it's a good place to hang out on sunday afternoons :) Another aunt and uncle were there too and we spent the afternoon swimming and playing volleyball in the pool. It was a nice, relaxing end to a pretty busy weekend.
Back to top
We read through the papers that are going to be submitted on Sunday. We went over some of them together so we could get everybody's input. It was good to learn what kinds of things belong in a conference paper. Most of the projects we've done at my school don't require papers so I'm not very experienced at paper writing. I also read some papers on the project that I might be working on next. There's a project involving data mining in databases that the professor wants to get going on so we might move onto that next. We might also continue with what Bill's conference paper was about. I guess this is something to be decided in the next few days.
Instead of the projects mentioned above they've decided to give me a different one. The program I was using at the beginning of the summer has a bunch of bugs in it. Apparently I wasn't the only one to lose a bunch of work because of them so they thought it might be nice if I could fix them. I'll be spending the next few weeks working on that.
I did a lot of visiting people this weekend. Friday afternoon/night was pretty uneventful. It had been kind of a long week so it was nice to have a low key evening. I watched a movie with some friends and then we tried to go out. We drove around for a bit trying to find something to do but soon discovered that there isn't much open after 11 near home.
I spent the day Saturday visiting with my grandparents. Three of my aunts came too and the weather was perfect for sitting out on the deck and having a mini cookout. When I got home from that my friends and I went to play pool. None of us were particularly good. It took us two hours to play 2.5 games if that tells you anything about our pool playing skills. I can't say that any of us got any better but we had fun :-)
Back to top
Since the code for the program is written in C++ and I've never used C++ I have a lot of learning to do. After spending most of the day yesterday reading about the differences between Java (the language I'm used to) and C++ I decided it might be more fun to go outside and read today. I took my book and took a walk to try and find some place to sit. I found a nice place by the river and started reading. It was really hot outside though! I think the high for today ended up being something like 98. I like the cold weather so I only lasted about an hour before I came back to the nice air conditioned lab. Today was one of the first days I have appreciated the frigid temperatures inside. My dad thinks I'm crazy when I leave for the day dressed in pants and a sweatshirt in the middle of the summer but its definitely necessary.
After reading a bunch about C++ I realized that I like Java much better. Maybe its just because I've used it so much and I'm familiar with it but Java just seems more friendly :-). I spent a bunch of time trying to sort through the code. I've never really had to do much with somebody else's code (not with a program this big at least) so this is all new to me. When I first sat down and realized that there were over 50 classes in this program I was quite overwhelmed. Facing a new language and someone else's code is tough. I really understand the need for good documentation now. It's so much nicer to see a comment at the beginning of a block of code and verify that the code is doing what it should be than it is to try and figure out what it's doing with no guidance. The other hard part of this is finding the bugs. There are some that are pretty straightforward because its easy to reproduce them. There are other times though that the program crashes and I can't figure out why. I think this project could keep me busy for a whole lot more than 4 more weeks. It could easily take me 4 weeks to learn what all the code is doing.
Today made me feel a little better about this project. I actually feel like I accomplished something today-not anything major but at least it was something. I found some code that I was looking for which enabled me to fix a few bugs. They were both pretty simple fixes once I found the right section of code. The two things I fixed do make the interface a little bit more user friendly though. So, I guess I'm making at least a little bit of progress.
I'm going to work an extra day at the end and I had worked an extra day a few weeks ago so that I could take a long holiday weekend. I got up at 4 on Thursday morning to make the drive down to the cape so I could catch an early boat to Nantucket. I'd been to Nantucket lots of times but never for the 4th of July so I wanted to make it down there early for their celebration. It was a lot of fun. They closed off Main St. and had a big waterfight at noon. It was perfect weather - sunny and really hot. Two fire trucks came down - an older one that you have to pump yourself and a modern one. There's some competition that they have every year between the two trucks and in the process everybody watching gets soaked. It was very entertaining and the water was refreshing - definitely worth the 4am wake up time.That night my dad took a bunch of us out on his boat to see the fireworks they had. I wasn't expecting much from the show but it turned out to be pretty good. The next day I spent at the at the beach. One of the people I was with had a 4-wheel drive so we were able to drive right out onto the sand. We always have a ton of stuff - chairs, towels, coolers, etc. - and didn't have to lug it very far at all :-). I don't tend to make it to the beach unless I'm on Nantucket so that was probably my only trip of the summer. It was good though!
The next day I spent wandering around town and boating around in the harbor. It was another beautiful, warm day and I didn't want to go home that afternoon. I had already stayed a day longer than I had planned though so I made the trip home that afternoon. I'm glad I got to go! Pictures are here.Back to top
Yesterday Margrit, Deborah, and I went to lunch so we could discuss career stuff. Margrit showed us the student center too. They had lots of options for lunch :-) Deborah and I will have to go back there sometime because we've got ourselves stuck in rut and have the same thing for lunch every day. We talked about graduate school and what kinds of things we should be sure to include in our applications should we decide to go. I'm still not really sure what I want to do yet. Whatever I decide to do I think that it might need to be at least somewhat hands-on and interactive. I enjoy programming but I don't think I could just sit and program for 40 hours a week. We also discussed what kinds of things should go in recommendations and what things to look for in the person who you are going to have write a recommendation for you.
So far this week has just been a continuation of last week. I'm still trying to fix bugs in the same program. I'm becoming more familiar with the setup of the program too. Today Bill gave me an outline of the structure of the program. It's not too detailed so I had already figured out most of what it said. It probably would have been a little more useful last week when I started the program but oh well.
I actually accomplished something today too. The little dots that you can draw on the lungs in the program now turn blue when you label them. I know it doesn't sound too interesting but after searching through lots of code and having no idea how to use the GUI package this was a pretty big accomplishment. Now that I've done that I'm pretty much ready to call it a day. It's hard to motivate myself to start something new with one hour left on Friday :-)
(Monday&Tuesday) After a little bit more extensive testing of my color changing code I've found a bug that I just can't seem to fix. When you are zoomed in on a section of the lung my color changing code doesn't quite calculate which pixels to color correctly. It seems to be off only by a tiny bit but I can't seem to figure out why. I took a break from that problem for a while to fix another zoom in/zoom out bug. When you click to zoom in it would be nice if the view would center on the mouse click. I've actually tried to make this happen in another project I worked on for a class but I ended up giving up before I got it working since it wasn't that important. I can't seem to make it work here either. I just think that zooming stuff is not for me.
This weekend went by too quickly! Saturday was my birthday :-) I had put off renewing my license (which expired that day) because I wanted to get a normal adult license instead of the vertical ones you get when you're under 21 in Massachusetts. I dunno why but I just don't like the vertical kind so I waited til Saturday to renew it. After an exciting trip to the registry (that was sarcasm in case you missed it) I spent 3 hours sitting in traffic on the way to my aunt's house. I sit through enough traffic commuting to Boston everyday so traffic on Saturday was just too much for me. We finally made it though and I spent the afternoon with my aunts and friends enjoying the great weather in my aunt's pool.
I was supposed to do some work at home on Sunday to make up for taking off July 4th but I forgot to bring one of the files home so I didn't get to do any. I wouldn't have had too much time anyway because I had to go to a family party on Sunday. My dad's aunt and uncle were celebrating their 50th wedding anniversary.Back to top
(Wednesday) I never thought I'd say this but leaving my house at 7 this morning seemed late. I had left at 6 the two days before and it was nice to get back into my regular schedule. Today I did something completely different. Harry, the graduate student that Deborah works with, has a paper that he has to finish and there was a lot of testing that needed to be done. I had started to get very frustrated with the stuff I had been working on so it was nice to take a break from it. Running some of the tests gave me a better idea of what they have been working on all summer.
(Thursday) Today I went back to fixing the bug in my color changing code. I've tried at least three different ways of doing this now but I always have the same problem. It's quite frustrating. At this point I'm guessing that my problem is something dumb that I am just overlooking. I've never done any GUI stuff in C++ so I think that there is some detail that I just don't know about. I bet someone that knows about the library I'm using would be able to find the problem in 2 minutes. Hopefully I'll be able to fix this tomorrow because I'm pretty tired of trying to figure this out.
(Friday) I finally found the problem! As it turns out it was a problem with the existing code and not the stuff I wrote. When the user filled in pixels on the screen the one that they clicked on wasn't exactly the one that was highlighted. The calculation error was so small that it only showed up when the view was zoomed in. Once I figured out that this was the problem it was easy to fix. It ended up only taking another 15 minutes. I am glad that I finished that but at the same time it was frustrating that it took me that long to do it. I guess I should just be happy its done. After I finished the color changing code I spent the rest of the day running more tests for Harry and Deborah.
(Monday) Today I was back to fixing more bugs in the interface code. I didn't do anything spectacular. A few little fixes is all that I accomplished. I still can't figure out how to center the zoomed in view on the point where the mouse was clicked. It's not something that's terribly important but it would be a nice bonus if I could get it done. After work I went over to a friend's house and went swimming. Usually by the time I get home from work and find some dinner its too late to think about going out to do something because I have to turn around and get up early the next day. I left at the regular time but I skipped dinner so I had some extra time. I'm glad I did because I had fun.
(Tuesday) Today's the last day of week 8! Two weeks to go. Today the interface needed to be sent to the radiologist that we consult with so she could do some work for us. This morning we found a more recent version of the code for the interface than I was given so I ended up having to merge my version with that version. It didn't take too long but it was a bit frustrating since some of the bugs that I had fixed had already been fixed in this other version. Now that it has been sent to the radiologist I think I'm done working on it. I'm not sure exactly what I'll be doing for the last two weeks. There was more talk about starting up the data mining project and Bill has also asked me to see if I can help him with a bit of coding. Hopefully we'll figure that out tomorrow.
I went out to Saratoga Springs to visit a friend, Kyle, who is working at Skidmore for the summer. Aside from the long drive out there I had a good weekend :-). We were looking for something to do on Saturday and someone suggested that we drive up and see Lake George. It only took us about 1/2 hour to get there so it was definitely worth the trip. We played mini-golf and I actually won! I am a terrible mini-golfer so I guess I was just lucky. After that we went one of the towns on the lake. We walked around and sat and watched the parasailors and boaters. I really want to try parasailing but I didn't realize that I would have the opportunity so I wasn't ready. Someday I'll try it. We ate dinner at a place overlooking the lake. Then we got some ice cream and walked around a bit more. The weather was beautiful and I had a great day. I took some pictures that are posted here .Back to top
(Wednesday) Today was kind of an in between day. I'm not working on the interface any more but I didn't have a new project yet either. Bill is having a few memory problems in is program so I spent a good portion of the day trying to help him find them. I'd never seen his code before so it was difficult for me to help. The hope was that I would ask some questions in trying to understand the code that might make him realize the problems but it didn't end up working. I guess I didn't ask the right questions. I also met with Margrit today to talk about what I'll be doing for the rest of the summer. She gave me a paper to read in hopes that it would inspire me to come up with a project to do.(Thursday) I read the paper that Margrit had given me yesterday. It was about searching for images in databases. While I was searching I found another paper that will be very relevant to what we might want to do. Another student started making a database of CT images of lungs but never finished. The idea is to finish up the database and try to have a good query for similar image retrieval. Ideally a doctor would be able to use this to help diagnose patients. The doctor would have a slice of a CT scan that hasn't been analyzed and be able to search the database to find similar cases which have already been diagnosed and therefore help with the current diagnosis. I was able to work it out so I could leave a little early today to go and meet my godmother, her daughter, and another friend. They came into Boston to meet me. We had a late lunch/early dinner around 3:30 and then went to visit a friend of ours that worked across the street. After that we had a little more time before my bus came so we walked around a bit and had ice cream :-)
(Friday) This morning I read the paper I found yesterday and came up with a bunch of things I wanted to look at a little more. I spent the afternoon searching the internet for stuff. I learned a lot of stuff about lungs and lung disease but I'm not sure it will be that helpful. At this point I think that the most interesting thing to look into would be determining whether nodules are benign or malignant. I'm not sure how that would fit into the similarity search though so I'm still searching for something. Hopefully letting everything sit in my head over the weekend will be helpful and I'll come up with something on Monday.
(Monday) I just did more reading today. I haven't come up with anything interesting that other people haven't worked on already. We are just beginning this project though so maybe we could start off with what others have done and then expand on it after we have a base to work from. I also want to make sure that Margrit and/or one of her other students will be interested in what I choose. Somebody else is going to have to pick this up after I leave next week. I'm not so sure I'm going to get very far in my last 6 days of work seeing as I'm feeling kind of lost at this point.
(Tuesday) Today was another day filled with reading. I found and skimmed quite a few papers. My list of questions keeps growing. I've been trying to write them down so that when I meet with Margrit I'll remember to ask all of them. I haven't written down all the little questions though and now I'm wishing I had. Hopefully when we sit down and talk tomorrow we'll be able to figure something out. 1 more week to go now! I must say that even though I think that this has been a really good experience for me I'm looking forward to having a few weeks off before heading back to school. This will probably be my last summer vacation if I don't decide to go on to grad school.
This weekend was mostly a family visiting weekend. I went to visit my grandparents on Saturday. Then I went to dinner with my aunt and uncle. I stayed at my aunt's house that night. In the morning both of us worked on our scrapbooks. In the afternoon I headed off to a family reunion. It was held at a campground so there was a pool and a soccer field and stuff. We had an egg toss which my partner and I lost but we didn't get egg all over us :-) Someone else had a pogo stick so a bunch of people did that. Apparently my aunts used to have one when they were kids so they were all really good at it. I, on the other hand, was terrible. Those things are harder than they look. My aunt took some pictures so if I get them before next week I might post them.Back to top
(Wednesday) Early this morning I did a bit more reading about the new project. I was basically just trying to make sure I had all my questions ready for my meeting with Margrit in the afternoon. Then when Margrit came in she gave Deborah and I a copy of Harry and her journal paper. It's going to be handed in soon so she needed some people to read it over and check for grammatical errors as well as to check the flow and the content. I spent the rest of the morning and most of the afternoon doing that. I've been doing a lot of reading lately but the subject of that paper was a little different so it was a nice change. I also got to sit outside for a while to read it which was great. After that I met with Margrit to talk about the new project. I presented her with all my questions and concerns and she thought that most of them were pretty legitimate and need to be looked into more. Since I only have a few more days there really isn't time for me to get into all of them. Based on the things I've learned about similarity searches in the past few days I'm supposed to come up with a simple equation to determine if two images are similar or not. If I have enough time I can test it on some of the data.
(Thursday) Today was a busy day! I didn't really get much done on the similarity search project though. I looked at the existing database some and realized that the attributes I was initially thinking were most important for the search aren't present in the database. I didn't have any time to decide what to do about that though because we started working on the journal paper. Margrit, Deborah, and I met to talk about the problems we had with the paper. We spent a lot of time on grammactical and little style things. After we had all of that worked out we had another meeting about the paper. This time Deborah, Harry, Bill, Margrit and I got together to talk about the content of the paper. We wanted to make sure that we addressed all the reviewers comments appropriately. So by thetime we finished all these meetings it was just about time for me to head home. Hopefully I can figure out some more of the similarity stuff tomorrow because time is running out!
(Friday) I read over the paper again this morning. We were going to meet in the afternoon to go over it but we never go to it. I'm guessing we'll do that on Monday. I spent most of my time today working ont he similarity stuff. I talked to Margrit about where to look for the data that I thought would be important for the search. Unfortunately in order to get some of the data about the volumes of the nodule we would have to run a bunch of tests. Since there really isn't time to do that anymore I'm just supposed to come up with an equation that I think might work. I spent most of the day doing that. What I end up with is going to be pretty simple and may not be a good similarity measure but at least it will be a good place to start. So far I've made a list of characteristics that I'm going to consider. The idea is to assign the characteristics that weights based on which I think are most important and hopefully end up with a decent similarity measure. I realized while I was doing this that I really did learn quite a bit this summer. I was able to apply a lot of what I learned without even realizing it. I had so many different ideas and thoughts running through my head at the same time and had a hard time sorting them out. I would start moving in one direction only to turn around and start over a few minutes later because I realized that it wouldn't work. I still haven't come up with anything yet but I think I'm a lot closer than I was this morning. I'll let the thoughts sit in my head overnight and hopefully be able to put it all together over the weekend.
(Monday) Over the weekend I had done a little bit of work so when I came in this morning I was ready to put together a mini-presentation of the work I did on similarity searches. I ended up coming up with two different equations that I would have tested if there were more time. To see the equations and an explanation of them click here . After I finished that up we all had a meeting to dicuss how our projects were going and where they should be headed in the future. Then I spent the rest of the afternoon working on my final report.
(Tuesday) My last day! Today I met with Margrit to go over my final report. Then I made some revisions and worked on finalizing my webpage. I also did some other last minute things to make sure that Margrit would have access to all the stuff I did over the summer. We went out to lunch for our last day too. I really learned a lot from this program not only about medical imaging and computer vision, but also about grad school and research in general. I really had no idea what to expect coming into this and now I have a pretty good idea what I would be getting myself into if I went to grad school. I still haven't made a definite decision but I think I want to go on and at least get my masters. If you're thinking about doing this program I would definitely suggest you go for it!Back to top