需求:
我想通过不同的颜色,在灰度图上直观显示所有不同误差的点,并有颜色条可以表示误差和颜色的对应关系。
存在的问题:
灰度图也发生了颜色的改变。代码如下:
img = imread('cameraman.tif');
imshow(img, []);
hold on;
num_points = 10;
col = randi([1, size(img, 2)], num_points, 1);
row = randi([1, size(img, 1)], num_points, 1);
error = rand(num_points, 1) * 10;
scatter(col, row, 100, error, 'filled');
caxis([0,10]);colormap(jet);
colorbar;
set(gca, 'YDir', 'reverse');
xlabel('Column (X)');
ylabel('Row (Y)');
title('Error Distribution on Cameraman Image');
hold off;
以上代码结果图如下:
我的解决方法: 将灰度图矩阵转换为三维矩阵,即可解决上述问题。修改后代码如下:
img = imread('cameraman.tif');
img = repmat(img, [1,1,3]);
imshow(img, []);
hold on;
num_points = 10;
col = randi([1, size(img, 2)], num_points, 1);
row = randi([1, size(img, 1)], num_points, 1);
error = rand(num_points, 1) * 10;
scatter(col, row, 100, error, 'filled');
caxis([0,10]);colormap(jet);
colorbar;
set(gca, 'YDir', 'reverse');
xlabel('Column (X)');
ylabel('Row (Y)');
title('Error Distribution on Cameraman Image');
hold off;
修改后代码结果如下:
本文主要是两类数据用散点图作比较时候的绘制方法,自己做时候在加图例这一步骤上尝试了很多次,因而写本文做记录、分享。
绘制方法写在见面plotscattergscatter
emmm,简要的写一个可以应用的背景哈(可能写的背景不很恰当(欢迎提改进意见哟),大家将就着瞅瞅,可以直接跳过看函数部分)
假设现在有神奇花和梦幻花两种花朵,在1-4月份的花朵直径都不同,现在想根据某两个直径差距区别较大的月份进行区别。
画散点图进行对比观察一下。
(PS:数据是随机数,所以效果啥样我也不晓得哈)
将`'your_image_file.jpg'`替换为你实际图片的路径。
2. **提取像素坐标**:如果你已经有了一组对应的像素值想要在图片上标注,你可以将它们作为散点的x、y坐标。如果没有,你需要创建一组随机或指定的坐标。
3. **创建散点图**:然后在图片上绘制散点,可以使用`scatter`函数,它接受两个向量作为输入,分别代表X轴和Y轴的位置。例如:
```matlab
scatter(img(:, :, 1), img(:, :, 2), 'filled'); % 假设我们正在使用RGB通道的前两通道作为坐标
4. **修改图像属性**:为了使散点更明显,你可能需要调整颜色、大小或者其他视觉属性,比如:
```matlab
hold on; % 保持当前绘图,不会覆盖原图
scatter(x_values, y_values, 50, 'red'); % 更改散点的颜色和大小
5. **保存结果**:
imwrite(img, 'image_with_scatter.jpg'); % 保存包含散点的新图片
记得,这里的例子假设你在处理的是彩色图片,并且散点的位置基于RGB通道。如果图片是灰度的,只需要第一个通道的像素即可。最后别忘了关闭图像窗口(`close all`),如果你不希望看到这个新打开的绘图窗口。