이 문장의 의미는 무엇입니까?비트 맵 보폭 및 4 바이트 관계?
Stride 속성은 한 행의 너비를 바이트 단위로 유지합니다. 그러나 효율성을 위해 시스템은 4 바이트 경계에서 시작하여 4 바이트의 배수로 패딩 된 행에 데이터가 채워지도록하기 때문에 행의 크기는 픽셀 크기의 정확한 배수가 아닐 수 있습니다.
이 문장의 의미는 무엇입니까?비트 맵 보폭 및 4 바이트 관계?
Stride 속성은 한 행의 너비를 바이트 단위로 유지합니다. 그러나 효율성을 위해 시스템은 4 바이트 경계에서 시작하여 4 바이트의 배수로 패딩 된 행에 데이터가 채워지도록하기 때문에 행의 크기는 픽셀 크기의 정확한 배수가 아닐 수 있습니다.
걸음이 쌓입니다. 즉, (8 비트 그레이 가정, 또는 픽셀 당 8 비트)가 4 의 가장 가까운 배수로 반올림됩니다 것을 의미합니다 :
Width | stride
--------------
1 | 4
2 | 4
3 | 4
4 | 4
5 | 8
6 | 8
7 | 8
8 | 8
9 | 12
10 | 12
11 | 12
12 | 12
등
C#에서,이 같은이를 구현할 수 :
static int PaddedRowWidth(int bitsPerPixel, int w, int padToNBytes)
{
if (padToNBytes == 0)
throw new ArgumentOutOfRangeException("padToNBytes", "pad value must be greater than 0.");
int padBits = 8* padToNBytes;
return ((w * bitsPerPixel + (padBits-1))/padBits) * padToNBytes;
}
static int RowStride(int bitsPerPixel, int width) { return PaddedRowWidth(bitsPerPixel, width, 4); }
즉, 이미지 너비가 17 픽셀이고 색상이 3 바이트이면 51 바이트가됩니다. 따라서 이미지 너비 (바이트)는 51 바이트이고 스트라이드는 52 바이트입니다.이 너비는 다음 4 바이트 경계로 반올림 된 이미지 너비입니다.
는 보폭은 4 항상 승수 ? –
제가 예를 들어 보겠습니다 :
이 폭이 160 인 경우, 보폭이 160 수 있다는 것을 의미하지만 폭이 (161)의 경우, 다음 걸음이 될 것이다 (164)
은 항상 4의 배수입니까? –
예. 이것은 Windows 비트 맵 일입니다. OpenCV를 사용하면 큰 걸음도 없습니다. – Aliostad
[C#을 scan0와 보폭]의 중복 가능성 (http://stackoverflow.com/questions/5691955/c-scan0-and-stride는) –
덕분에 유용한 ... –