java - (k<<24)>>>24在遥感图像读取中的意义是什么?

原文 标签 java image-processing

一般来说,为什么我们先将它左移,然后再次右移?
它与确保像素值为正之类的事情有关吗?
代码剪断->

for(k=0; k<Width; k++)
{
    if(shiftFlag != 8)
    {
        p1 = pix_rgb[i][2*k] << 24;
        p2 = (pix_rgb[i][2*k+1] <<24 ) >>> 8;
        tempCount = p1 | p2;
        tempCount = tempCount >>> 16;
    }
    else
        tempCount = (pix_rgb[i][k] << 24) >>> 24;

    if(tempCount>maxBand[i])
        maxBand[i]=tempCount;

    if(tempCount<minBand[i])
       minBand[i]=tempCount;
}

最佳答案

基于 pix_rgb 的名称我假设 pix_rgb[i][k]持有 int代表颜色,通常在 32 位(大小为 int )以形式写入

AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB
|       |       |       |
|       |       |       blue
|       |       green
|       red
alpha/transparency 



来自 pix_rgb[i][k] << 24您将所有位向左移动并将最右边的 24 位设置为 0。

所以AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB会变成
BBBBBBBB000000000000000000000000
        ^^^^^^^^^^^^^^^^^^^^^^^^ <<24

现在与 (pix_rgb[i][k] << 24) >>> 24你可以把它想象成 BBBBBBBB000000000000000000000000 >>> 24在那里您将位向右移动,但同时保证大多数左位将填充为 0(如果我们使用 >> 24 我们可以用 1 填充它,如果第一个 B 也是 1)。

所以BBBBBBBB000000000000000000000000将变成
000000000000000000000000BBBBBBBB
^^^^^^^^^^^^^^^^^^^^^^^^ >>>24

换句话说,我们得到了 int持有代表 的值只有蓝色。

简而言之
  • pix_rgb[i][k] << 24用于删除除 BBBBBBBB 之外的所有位
  • >>>24用于设置BBBBBBBB回到 int 的较低指数因此我们可以将其视为 0-255 范围内的值。
  • 关于java - (k<<24)>>>24在遥感图像读取中的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412759/

    相关文章:

    python - OpenCv索引如何工作?

    java - 在另一张图片上添加一些图片

    c++ - OpenCV:通常可以使用哪些方法或二值化技术来提取低质量和低对比度图像上的前景?

    python - 根据 bool 图像掩码值选择图像区域

    java - Cassandra 批量查询 vs 单次插入性能

    java - 如何从android中的ActivityThread读取/写入文件?

    java - 带有 Ehcache 的 Spring 启动 @Cacheble

    opencv - 如何调整现有的情绪检测模型以检测自定义情绪?

    java - 在 JUnit 测试中将 Maven 属性传递给 Spring Application 上下文文件

    for 循环中的 Java Thread.sleep()