全部代码:https://github.com/RedemptionC/CourseraAlgorithms/tree/master/seam
这是学完最小生成树,最短路径之后的编程作业
这个算法是用在resize图片时,和裁剪和scaling相比,它可以最大程度的保留图片信息,比如:
原图:
scaling之后:
裁剪之后:
seam carving:
可以看到,scaling之后,塔变得细长了,而裁剪之后则大量丢失了信息,相对而言,seam carving确实最大程度保留了图片信息
本次只需要提交一个类:
SeamCarver
notation
本实验中,(x,y)代表第x列,第y行,并且(0,0)代表左上角,(w-1,h-1)代表右下角
并且假设像素的颜色为RGB形式,用三个0~255间的整数表示
计算能量
这一步需要计算每个像素的能量,能量越高,就越不可能在seam中被移除
这里定义的能量计算公式是:dual-gradient energy function
E(x,y)=
其中