最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Matlab制作抖音同款含褶皺面料圖

 更新時(shí)間:2022年03月01日 10:52:07   作者:slandarer  
這篇文章主要介紹了如何利用Matlab制作抖音的同款含褶皺面料圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下

效果如下

步驟

1.導(dǎo)入圖片

我們需要導(dǎo)入一張褶皺圖片(background.jpg)以及一張前景圖片(foreground.jpg),將褶皺圖片灰度化,將前景圖調(diào)整至與褶皺圖片相同大小:

bkgPic=imread('background.jpg');
bkgPic=rgb2gray(bkgPic);
forePic=imread('foreground.jpg');
forePic=imresize(forePic,size(bkgPic));

原圖在這里:

2.圖片擴(kuò)張

因?yàn)槲覀円獙?duì)前景圖片進(jìn)行拉伸,難免邊角處缺一塊,因此我們首先將邊緣處顏色往外擴(kuò)展幾圈(13圈)

exforePic=uint8(zeros(size(forePic)+[26,26,0]));
exforePic(14:end-13,14:end-13,1)=forePic(:,:,1);
exforePic(14:end-13,14:end-13,2)=forePic(:,:,2);
exforePic(14:end-13,14:end-13,3)=forePic(:,:,3);

for i=1:13
    exforePic(i,14:end-13,:)=forePic(1,:,:);
    exforePic(end+1-i,14:end-13,:)=forePic(end,:,:);
    exforePic(14:end-13,i,:)=forePic(:,1,:);
    exforePic(14:end-13,end+1-i,:)=forePic(:,end,:);
end
for i=1:3
    exforePic(1:13,1:13,i)=forePic(1,1,i);
    exforePic(end-13:end,end-13:end,i)=forePic(end,end,i);
    exforePic(end-13:end,1:13,i)=forePic(end,1,i);
    exforePic(1:13,end-13:end,i)=forePic(1,end,i);
end

擴(kuò)展后圖片(圖片下側(cè)明顯一點(diǎn)):

3.像素映射

原理借鑒ps扭曲置換的原理,亮度較大的像素(大于128)取右下角像素RGB值進(jìn)行置換,亮度較小的像素(小于128)取左上角像素RGB值進(jìn)行置換,由于

(255-128)/10=12.7

(0-128)/10=-12.8

各個(gè)像素點(diǎn)與替換像素點(diǎn)的距離不超過(guò)13,因此上一步共擴(kuò)展了13圈。

同時(shí)因?yàn)楦鱾€(gè)像素分布為整數(shù)點(diǎn)位置,而位置差計(jì)算一般都不是整數(shù),因此我們要對(duì)偏移距離向上向下取整,獲得兩個(gè)像素點(diǎn)RGB值,并對(duì)這兩點(diǎn)數(shù)值進(jìn)行線性插值即可

newforePic=uint8(zeros(size(forePic)));
for i=1:size(bkgPic,1)
    for j=1:size(bkgPic,2)
        goffset=(double(bkgPic(i,j))-128)/10;
        offsetLim1=floor(goffset)+13;
        offsetLim2=ceil(goffset)+13;
        sep1=goffset-floor(goffset);
        sep2=ceil(goffset)-goffset;
        c1=double(exforePic(i+offsetLim1,j+offsetLim1,:));
        c2=double(exforePic(i+offsetLim2,j+offsetLim2,:));
        if sep1==0
            c=double(exforePic(i+offsetLim1,j+offsetLim1,:));
        else
            c=c2.*sep1+c1.*sep2;
        end
        newforePic(i,j,:)=c;
    end
end

像素值映射結(jié)果:

4.正片疊底

將兩張圖片疊加起來(lái)

公式:混合色×基色 / 255=結(jié)果色

由于正片疊底后所出圖片較暗,這里我們選擇除以220而不是255:

newforePic=uint8((double(newforePic).*double(bkgPic))./220);
imwrite(newforePic,'result.jpg')
imshow(newforePic)

5.完整代碼

function clothFold
bkgPic=imread('background.jpg');
bkgPic=rgb2gray(bkgPic);
forePic=imread('foreground.jpg');
forePic=imresize(forePic,size(bkgPic));

exforePic=uint8(zeros(size(forePic)+[26,26,0]));
exforePic(14:end-13,14:end-13,1)=forePic(:,:,1);
exforePic(14:end-13,14:end-13,2)=forePic(:,:,2);
exforePic(14:end-13,14:end-13,3)=forePic(:,:,3);

for i=1:13
    exforePic(i,14:end-13,:)=forePic(1,:,:);
    exforePic(end+1-i,14:end-13,:)=forePic(end,:,:);
    exforePic(14:end-13,i,:)=forePic(:,1,:);
    exforePic(14:end-13,end+1-i,:)=forePic(:,end,:);
end
for i=1:3
    exforePic(1:13,1:13,i)=forePic(1,1,i);
    exforePic(end-13:end,end-13:end,i)=forePic(end,end,i);
    exforePic(end-13:end,1:13,i)=forePic(end,1,i);
    exforePic(1:13,end-13:end,i)=forePic(1,end,i);
end
    
newforePic=uint8(zeros(size(forePic)));
for i=1:size(bkgPic,1)
    for j=1:size(bkgPic,2)
        goffset=(double(bkgPic(i,j))-128)/10;
        offsetLim1=floor(goffset)+13;
        offsetLim2=ceil(goffset)+13;
        sep1=goffset-floor(goffset);
        sep2=ceil(goffset)-goffset;
        c1=double(exforePic(i+offsetLim1,j+offsetLim1,:));
        c2=double(exforePic(i+offsetLim2,j+offsetLim2,:));
        if sep1==0
            c=double(exforePic(i+offsetLim1,j+offsetLim1,:));
        else
            c=c2.*sep1+c1.*sep2;
        end
        newforePic(i,j,:)=c;
    end
end

%grayForePic=rgb2gray(newforePic);
%rate=double(bkgPic)./double(grayForePic);

newforePic=uint8((double(newforePic).*double(bkgPic))./220);
imwrite(newforePic,'result.jpg')
imshow(newforePic)
end

注:

若是17年及之前版本,需將代碼最后的

newforePic=uint8((double(newforePic).*double(bkgPic))./220);

改為(三個(gè)通道分別處理):

newforePic(:,:,1)=uint8((double(newforePic(:,:,1)).*double(bkgPic))./220);
newforePic(:,:,2)=uint8((double(newforePic(:,:,2)).*double(bkgPic))./220);
newforePic(:,:,3)=uint8((double(newforePic(:,:,3)).*double(bkgPic))./220);

到此這篇關(guān)于利用Matlab制作抖音同款含褶皺面料圖的文章就介紹到這了,更多相關(guān)Matlab褶皺面料圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Matlab實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)顯示方法

    Matlab實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)顯示方法

    這篇文章主要為大家詳細(xì)介紹了Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理圖文詳解

    C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理圖文詳解

    在編寫程序時(shí),通常并不知道需要處理的數(shù)據(jù)量,或者難以評(píng)估所需處理數(shù)據(jù)量的變動(dòng)程度,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中樹與森林專項(xiàng)詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中樹與森林專項(xiàng)詳解

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中樹與森林,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-11-11
  • C++廣播通信實(shí)例

    C++廣播通信實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)廣播通信的方法,實(shí)例講述了C++ socket廣播通信的原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言編程函數(shù)指針入門精講教程

    C語(yǔ)言編程函數(shù)指針入門精講教程

    大家在C語(yǔ)言的學(xué)習(xí)中一定會(huì)接觸指針這樣一個(gè)東西,而指針也是新手路上一定要消滅的boss,如果以后還要學(xué)習(xí)Java的同學(xué)更是要注重指針的學(xué)習(xí),希望能夠有所幫助
    2021-10-10
  • MATLAB中subplot函數(shù)的語(yǔ)法與使用實(shí)例

    MATLAB中subplot函數(shù)的語(yǔ)法與使用實(shí)例

    subplot()是將多個(gè)圖畫到一個(gè)平面上的工具,下面這篇文章主要給大家介紹了關(guān)于MATLAB中subplot函數(shù)的語(yǔ)法與使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問(wèn)題詳解

    C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問(wèn)題詳解

    c++?vector轉(zhuǎn)數(shù)組是一種將vector容器的元素轉(zhuǎn)換為數(shù)組的方法,主要能幫助提高程序的性能和效率,下面這篇文章主要給大家介紹了關(guān)于C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C/C++后端學(xué)習(xí)與練習(xí)深入

    C/C++后端學(xué)習(xí)與練習(xí)深入

    這篇文章主要介紹了C/C++對(duì)于后端的學(xué)習(xí)與練習(xí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C++面試八股文之左值與右值

    C++面試八股文之左值與右值

    簡(jiǎn)單來(lái)說(shuō),左值就是可以使用&符號(hào)取地址的值,而右值一般不可以使用&符號(hào)取地址,這篇文章主要來(lái)和大家講講面試中左值與右值??嫉闹R(shí)點(diǎn),需要的可以參考一下
    2023-06-06

最新評(píng)論

浙江省| 济南市| 隆安县| 巨野县| 卢氏县| 海兴县| 前郭尔| 惠来县| 托克逊县| 凭祥市| 淮阳县| 陕西省| 长兴县| 洛川县| 家居| 闻喜县| 平昌县| 青浦区| 泸西县| 中西区| 长汀县| 荣成市| 资溪县| 凤冈县| 泾川县| 延津县| 乐昌市| 威海市| 舒城县| 三门峡市| 建德市| 宝山区| 土默特左旗| 治多县| 德庆县| 兴国县| 察雅县| 宜兰县| 新田县| 通州市| 桑日县|