我有一个灰度图像,需要提高其分辨率。这怎么能在MATLAB中完成?它主要是通过乘以图像的尺寸来完成的吗?增加灰度图像的分辨率
-6
A
回答
2
您需要执行插值。有很多方法可以做到这一点。使用imresize
(例如imgOut=imresize(img,scale,method);
),或者如果你没有图像处理工具箱,考虑下面的代码:
function imres = resizeim(I,outsize,interpalg)
if nargin<3 || isempty(interpalg),
interpalg='cubic';
end
rows=outsize(1);
cols=outsize(2);
vscale = size(I,1)/rows;
hscale = size(I,2)/cols;
imgClass = class(I);
imres = interp2(double(I), (1:cols)*hscale + 0.5 * (1 - hscale), ...
(1:rows)'*vscale + 0.5 * (1 - vscale), ...
interpalg);
imres = cast(imres,imgClass);
注:这是在艰难中起步。许多人需要执行预过滤或其他转换。此外,此示例仅支持2D(灰度)图像。对于RGB,可以对其进行调整以处理每个颜色平面,或者简单地对每个平面进行循环处理。再次,这只是一个例子。
除边缘处理外,这与关闭抗锯齿的imresize
(即imresize(...,'Antialiasing',false)
)的结果相同。
关于边缘处理,有关extrapval
参数的信息,请参阅interp2
的文档。代码变得很难看,但是您可以修补插值点(interp2
输入)中的最小/最大元素以简单地精确映射到边缘,或者您可以使用NaN
代替extrapval
,并且可以使用imres
代替NaN
其邻居等等。请注意,只需插入诸如linspace(1,size(I,1),rows)
之类的点将不会给带来预期的比例变化。
1
您还可以通过对图像进行傅里叶变换,对其进行零填充,傅立叶逆变换并获取绝对值,从而执行正弦插值。
im_rz = abs(ifft2(padarray(fft2(im),[row_pad, col_pad])))
0
您可以“幻觉”高分辨率细节。参见例如格拉斯纳等"Single image Super resolution" ICCV 2009
该算法的实现,可以发现here
相关问题
- 1. 在TCPDF中增加图像分辨率
- 2. 图像分辨率
- 3. 如何增加/减少下载图像的分辨率
- 4. 分辨率的图像
- 5. 使用opencv增加图像比例和最大化分辨率?
- 6. 加载高分辨率背景图像
- 7. Away3D中增加Videotexture的分辨率
- 8. 寻找图像分辨率?
- 9. iPhone图像分辨率
- 10. 检测图像分辨率?
- 11. 更改图像分辨率
- 12. drawInRect:图像分辨率
- 13. 在R中增加向量分辨率
- 14. Graphite为度量标准增加新的分辨率
- 15. 细分的灰度图像
- 16. 同时支持高分辨率和低分辨率图像
- 17. HTML:在低分辨率下渲染高分辨率图像
- 18. 使用jQuery切换高分辨率图像和低分辨率图像
- 19. 如何将高分辨率图像转换为低分辨率图像?
- 20. 分享高分辨率图像
- 21. WordPress的可怕的图像分辨率
- 22. 灰度图像分析
- 23. 划分灰度图像
- 24. 如何在不变形的情况下增加图像的分辨率?
- 25. Matlab - 增加阵列中图案的分辨率
- 26. 如何增加gif图片的分辨率?
- 27. 如何增加gnuplot中等高线图的分辨率?
- 28. Java库来增加图片的分辨率
- 29. Android位图失去图像分辨率
- 30. Slick2d增加屏幕分辨率而不增加视野