Skip to content

in this project we explored the ways to findout boundaries between ice and bedrock using various algorithms

Notifications You must be signed in to change notification settings

hitheshbusetty/Icetracking_computervision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Icetracking_computervision

in this project we explored the ways to findout boundaries between ice and bedrock using various algorithms

To understand how rising global temperatures affect ice at the Earth’s north and south poles, glaciologists need information about the structure of the ice sheets. The traditional way of doing this is to drill into the ice and remove an ice core. But a single ice core can take many months to drill, and only gives information about the ice at a single latitude-longitude point. To expedite this process, scientists have developed radar systems that allow an airplane to collect an approximate “cross section” of the ice below the airplane’s flight path (Fig 2a). This produces a radar echogram like the one shown in Fig 2b. The horizontal axis is the distance along the flight path, while the vertical axis is the depth below the plane. The echogram shows two prominent features. One is the very dark line near the top, which is the boundary between the air and the ice. There’s also a deeper line which shows the boundary between the ice and the bedrock. Fig 2c shows the same echogram but with the air-ice (red) and ice-rock (green) boundaries manually labeled. These echograms reveal the complex structure of the ice — note the ridges and valleys in the bedrock in Fig 2c, for example — and contain rich information for glaciologists to calculate volumes of ice and to estimate how it will change with warming temperatures. But as you can see from the figure, these echograms are also extremely noisy, so finding the layer boundaries is quite challenging. Even human experts, when presented with the same echogram, often disagree on where the boundaries are.

In this part, we’ll create code to try to find these two boundaries (air-ice and ice-rock). We’ll make some assumptions to make this possible. First, you can assume that the air-ice boundary is always above the ice-rock boundary by a significant margin (say, 10 pixels). Second, you can assume that the two boundaries span the entire width of the image. Taken together these, two assumptions mean that in each column of the image, there is exactly one air-ice boundary and exactly one ice-rock boundary, and the ice-rock boundary is always below. Third, we assume that each boundary is relatively “smooth” — that is, a boundary’s row in one column will be similar in the next column. Finally, you can assume that the pixels along the boundaries are generally dark and along a strong image edge (sharp change in pixel values).

Screen Shot 2023-06-23 at 12 26 56 PM

Aim is to find the air-ice boundary and ice-rock boundary in the echogram image. Observed variables are the list of pixel values of each column 3 approachs are implemented:

Simple bayes net: edge strength function uses the sobel filter from opencv library, Edge strength is maximum when there is a transition of pixel intensity values from lower to higher. For simple bayes, P(boundary/pixel_intensity,pixel edge strength ) is calculated. For this the emmision probability will be (pixel_intensity/max_pixel_intensity) * (pixel_edge_strength/max_edge_strength), But We observed better results by just considering the edge strength feature. (edge_strength_pixel/max_edge_strength) is calculated for each pixel in a particular column and the pixel with maximum value is considered air-ice boundary. After finding air-ice boundary, We are taking next maximum value which is 10pixels away from air-ice boundary as ice-rock boundary.

HMM using Viterbi To generate transition matrix, We need training data, which is not present in this question. So, We are computing transition in the order col0,col1. First, for col0 which is the initial state, the emission probability itself is considered and air-ice and ice rock boundary are computed ofr col0. For computing V(col2), emission probability of pixels of col2 * transition probability is done. Transition probability is defined as the distance from air-ice and ice-rock boundary of previous column. Few transition probability functions are implemented: a) 1/ absolute_value(distance_from_previous_boundary) b) (no_of_rows-absolute_value(distance_from_previous_boundary)) / no_of_rows c) 1 * abs(distance) / no_of_rows We tested by using Viterbi algorithm, emission_current * max(transition * P(i)) where i denotes previous column pixels probability. But, Considering c as a heuristic, Was performing better. Final implementation is emission of current pixel - (transition of previous boundary to current pixel). This is kind of heuristic implementation. emission probability is a feature that checks for edge detection. Combined with transition probability. Transition probability is a feature which checks that current column boundary is close to prevoius column boundary.

HMM with human feedback Additional human feedback is given, 2 points which are guarenteed to lie on boundary are additional input. To incorporate this human feedback, We added a feature to our HMM probability distribution. We are computing the distance of current pixel column from feedback column and adding that to our heuristic. 1 * abs(distance)/ no_of_rows. no_of_rows is considered as denominator because that is the maximum possible distance a pixel can be.

Final heuristic becomes: emission of current pixel- transition from prevoius boundary- distance from human boundary point column. Ideally these probabilities must be multiplied, But as mentioned earlier, considering them as heuristic score did a better job in finding the boundary. We also implemented multiplication, It is commented in the code.

About

in this project we explored the ways to findout boundaries between ice and bedrock using various algorithms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages