我想为任何正弦光栅创建位图。我怎么能做到这一点。
我这样做:
n = 64;
[X,Y] = meshgrid(linspace(-2*pi,2*pi,n));
sinewave2D=sin(5*X);
plot(sinewave2D(1,:))
imagesc(sinewave2D)
imwrite(sinewave2D,'sine.bmp')
imshow('sine.bmp')
但是“sinewave2D”具有负值,bmp接受0-255之间的值,所以我怎样才能实现这一点并拥有我需要的光栅。
答案 0 :(得分:2)
听起来好像问题是如何处理负数。
作为程序员,这是您的选择!
一种方法是将正弦波标准化以适应输出范围,如下所示:
% shift digital counts so the minimum is at zero
sinewave2D = sinewave2D - min(sinewave2D(:);
% scale digital counts so the maximum is at 255
sinewave2D = sinewave2D / max(sinewave2D(:) * 255;
% then, write the image
imwrite(uint8(sindwave2D), 'sine.bmp');
这种方法的问题当然是,如果正弦波的动态范围发生变化,这些变化将不会反映在输出图像中!它还以非零数字计数为零,因此零位将在位图中显示为灰色。