Pls. 이것이 가사 일을하는 질문이 아니라, 내가하고있는 일과 내가 필요한 조언이있는 곳을 주목하라.이미지 배열의 패딩을위한 로직
2 차원 이미지가 1D 배열 (행 주요 순서)에 저장되어 있습니다. 이 이미지를 상단의 패딩 1 행, 하단의 1 행, 오른쪽의 패딩 1 열, 이미지의 1 열 왼쪽으로 테두리 픽셀 복제로 패딩해야합니다. C 코드에서이 작업을 수행하려고합니다.
아래에 표시된 img []와 같이 1D 배열에 저장된 2D 이미지를 고려하십시오. 실제 이미지는 크기가 3x4 (4 행 3 열)이고 양방향 (위/아래/왼쪽/오른쪽)에서 1 행 및 1 열 패딩 한 후 최종 이미지 크기는 5x6 (6 행, 5 열)입니다. 제 경우
int img[30] = {0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,10,11,12,0,0,0,0,0,0};
패딩의 크기는 공지 된 상단과 하단에 단 1 행 1 열의 우측 이미지의 좌측된다. 그래서 내가 구현 한 한 가지 방법은 지정된 이미지 배열의 픽셀 인덱스와 채워진 출력 픽셀 인덱스 간의 매핑을 만드는 것입니다. 미리 계산 된 조회 테이블에이 매핑을 저장하고 패딩 논리에이 테이블을 사용했습니다.
과 같아야 출력을 패딩 후 : 내가 만든
int img[30] = {1,1,2,3,3,1,1,2,3,3,4,4,5,6,6,7,7,8,9,9,7,7,8,9,9};
조회 테이블했다 : -
int lut[6,6,7,8,8,...];
이 테이블을 사용하여 다음과 같이
for(i=0;i<30;i++)
{
img[i] = img[lut[i]]; //something on this lines...
}
하지만를 조회 테이블 기반 met를 사용하는 것보다 프로그램 적으로이 이미지 패딩 로직을 구현하는 데 관심이 있습니다. 벽돌 상자. 즉, 런타임에 코드에서 픽셀 인덱스를 계산하려고합니다. EDIT : 또한 추가 된 패딩 된 행/열에 대해 저장소를 제공하는 것과 동일한 위치에 패딩 된 이미지를 가져와야합니다.
코드가 어떻게 보이는지 모든 포인터.
감사합니다. 방금 복사, 배열 내 주변의 모든 데이터를 이동하지 않아도 - 당신의 이미지가 이미 대상 배열 내 정확한 위치에 위치하므로
-AD
아주 좋아요. 논리를 이해하기 위해, 그리고 그것도 주()와 함께!! 고맙습니다. – goldenmean